向量整数被扰乱? [加一 - Leetcode #66]

问题描述 投票:0回答:1
class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        long long number = 0;
        int result = 0;
        vector<int> finalResult;

        // Assigning the vector into an int
        for (int i = 0; i < digits.size(); ++i) {
            number = number * 10 + digits[i];
        }

        // Adding one for solution
        result = number + 1;

        // Extracting digits from the result and inserting them into the finalResult vector
        while (result > 0) {
            int digit = result % 10;
            finalResult.insert(finalResult.begin(), digit); // Insert the digit
            result /= 10;
        }

        return finalResult;
    }
};

失败:

通过:

是什么导致向量中的整数在

digits = [9,8,7,6,5,4,3,2,1,0]
时出现这样的混乱?

c++ vector
1个回答
-1
投票

输入最多100位数字,会溢出

long long
。相反,您可以手动实现加法和进位。

#include <ranges>
class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        deque<int> res;
        int carry = 1;
        for (int d : digits | views::reverse) {
            d += carry;
            res.push_front(d % 10);
            carry = d / 10;
        }
        if (carry) res.push_front(carry);
        return vector<int>(res.begin(), res.end());
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.