class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int flag = 0;
if(digits[digits.size() - 1] == 9){
digits[digits.size() - 1] = 0;
flag = 1;
}
else{
digits[digits.size() - 1] += 1;
return digits;
}
for(int i = digits.size() - 2; i >= 0; i--){
if(flag){
int cur = digits[i] + 1;
if(cur == 10){
flag = 1;
digits[i] = 0;
}
else{
digits[i] = cur;
flag = 0;
}
}
}
if(flag){
digits.insert(digits.begin(),1);
}
return digits;
}
};
参考:https://siddontang.gitbooks.io/leetcode-solution/content/array/plus_one.html
一个更简单的做法
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int flag = 1;
for(int i = digits.size() - 1; i >= 0; i--){
int cur = digits[i] + flag;
flag = cur / 10;
digits[i] = cur%10;
}
if(flag)
digits.insert(digits.begin(), 1);
return digits;
}
};