思路:分为两种情况
1.没有进位,直接+完就完,比如46+1=47
2.有进位而且还需要扩展一位,比如99+1=100
代码如下:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int jinwei=1;
for(int i=digits.size()-1;i>=0;i--){
int temp=digits[i];
digits[i]=(temp+jinwei)%10;
jinwei=(temp+jinwei)/10;
}
//如果加完之后还有进位,则需要新建数组进行加一位
if(jinwei==1){
vector<int>res(digits.size()+1);
res[0]=1;
for(int i=0;i<digits.size();i++){
res[i+1]=digits[i];
}
return res;
}else{//没有进位的情况下,直接输出原数组+1的结果
return digits;
}
}
};
还有种思路就是把数组转换为数字,计算 完成之后再转换为数组,想想都比较头疼,可以试试哈。