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]
时出现这样的混乱?
输入最多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());
}
};