66. 加一
做法一
vector<int> Solution::plusOne(vector<int>& digits) {
int right = digits.size() - 1;
//最后一位加1,计算进位
int carry = (digits[right] + 1)/10;
//加上去
digits[right] = (digits[right] + 1) % 10;
right--;
while (right >= 0 && carry == 1) {
carry = (digits[right] + carry) / 10;
digits[right] = (digits[right] + 1) % 10;
right--;
}
if (right < 0 &&carry==1) {
digits.insert(digits.begin(),1);
}
return digits;
}
改进
单纯为了解决这个题的话,只看9就可以了,看每一步都是加一操作
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
for (int i = digits.size() - 1; i >= 0; i--) {
if (digits[i] != 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
digits.insert(digits.begin(), 1);
return digits;
}
};