题目:
参考解法:
class Solution {
public:vector<int> plusOne(vector<int>& digits) {bool carry = true;for(int i=digits.size()-1; i >= 0 && carry; i--) {carry = (++digits[i]%=10) == 0;}if(carry) {digits.insert(digits.begin(), 1);}return digits;}
};
分析:
这里注意循环条件,如果carry不为1,则说明已经没有进位,数字是怎样的,就是怎样的。
这里注意一下carry = (++digits[i]%=10) == 0;,判断是否产生了进位的方法。(这里适合于加1的情绪,其余的不适合),
比如加2,相应的代码如下:
class Solution {
public:vector<int> plusTwo(vector<int>& digits) {int carry = 0;for(int i=digits.size()-1; i >= 0 || carry; i--) {digits[i]=digits[i]+((i==digits.size()-1)?2:0)+carry;carry=(digits[i]%10==0||digits[i]%10==1)?1:0;digits[i]=(digits[i]+((i==digits.size()-1)?2:0)+carry)%10;if(!carry)break;}if(carry) {digits.insert(digits.begin(), 1);}return digits;}
};