很简单,只需要注意到进位情况即可
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
vector<int>::size_type sz=digits.size();
bool ifadd=0;
++digits[sz-1];
if(digits[sz-1]==10){//最后一位加一后需要进位
ifadd=1;
digits[sz-1]=0;
for(int i=sz-2;i>=0;--i){//循环遍历判断是否有进位需要加一
if(ifadd){
++digits[i];
if(digits[i]==10){
ifadd=1;
digits[i]=0;
}
else{
ifadd=0;
break;
}
}
}
}
if(ifadd){//若首位最后也要进位
digits.push_back(0);//整体后移,第一个置1
for(int i=sz;i>0;--i)
digits[i]=digits[i-1];
digits[0]=1;
}
return digits;
}
};