思路
很明显这一题的思路就是从后开始遍历,但要考虑到一点就是进位问题,因此从最后一位开始自增1,如果遇到当前位对10取模后不为0,则可以将该容器直接返回;若取模后为0则发生了进位,因此需要对前一位进行自增操作,依次一直到容器最低位。特殊情况就是容器全为9,这时候就是特殊开辟一个容器,长度用原容器加1,首位为1,其余为0。
代码
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int len=digits.size();
for(int i=len-1;i>=0;--i){
++digits[i];
digits[i]%=10;
if(digits[i]!=0)return digits;
}
vector<int> vec(len+1);
vec[0]=1;
return vec;
}
};