简单题,考虑进位即可:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int x = (digits.back() + 1) / 10;//进位
digits.back() = (digits.back() + 1)%10;
int rem = 0;
for(int i = digits.size()-2; i >= 0 && x; --i){
rem = (digits[i] + x) % 10;
x = (x + digits[i])/10;
digits[i] = rem;
}
if(x) digits.insert(digits.begin(), x);//如果依然有进位
return digits;
}
};
换个写法:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int n = digits.size();
int x = 1;
for(int i = n-1; i >= 0; --i){
if(digits[i] == 9) digits[i] = 0;
else{
digits[i] += 1;
x = 0;
break;
}
}
if(x) digits.insert(digits.begin(), 1);
return digits;
}
};