加1,在一个数组末端加1会出现什么情况。拿到这个题目我就有点跑偏了,往大数上马不停蹄,跑了一半发现错得离谱。初开9 + 1能进位,其他任何数加一个1直接返回就行了。所以如果末尾是0,1,2,3,4,5,6,7,8直接返回digits[末尾] + 1。那么如果是9呢?是9这位就变成0,下一位就变成n+1,对不对。如果全都是9呢,全都是9就需要在整个数组前面插入一个1达到目的。
class Solution { public: vector<int> plusOne(vector<int>& digits) { int len; for(len = digits.size() - 1;len >= 0;-- len) { if(digits[len] != 9) { digits[len] ++; return digits; } else { digits[len] = 0; } } if(len < 0) { digits.insert(digits.begin(),1); } return digits; } };