class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
reverse(digits.begin(), digits.end()); //先翻转 让个位在digits[0]处,方便处理进位
int t = 1;
for (auto& x : digits) {
t += x; //总和
x = t % 10; //当前个位
t /= 10; //当前进位
}
if (t) digits.push_back(t); //当最高位还有进位时(999+1 = 1000)将进位最后加入数组, 作为最高位
reverse(digits.begin(), digits.end()); //翻转数组,0001,翻转成1000
return digits;
}
};
这种做法会超出范围(long long 溢出)
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int n = digits.size();
long long num = 0;
vector<int> res;
for (int i = 0; i < n; i ++) {
num *= 10;
num += digits[i];
}
num += 1;
while (num) {
long long t = num % 10;
res.push_back(t);
num /= 10;
}
reverse(res.begin(), res.end());
return res;
}
};