1.设置一个first和flag,标识第一次加一和进位。
如果first为1,则加上1和flag;否则不加1只加flag,其实可以就合并写成加一即可。
从最低位加一,如果进位就flag为1,进行下一次循环;如果不进位就把加的数赋给原数,跳出循环。
如果最后flag为1,就代表是99999...,最高位还要进位,就用vertor.insert(versor.begin(),valuetarget),在最前面插入一个为1的数。
### 代码
```cpp
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
// vector<int> values;
int len=size(digits);
// long sum=0;
// for(int n=0;n<len;n++){
// sum=digits[n]+sum*10;
// }
// sum++;
// string str=to_string(sum);
// cout<<str;
// int temp;//余数
// while(sum>0){
// temp=sum%10;
// sum/=10;
// values.push_back(temp);
// }
// reverse(values.begin(),values.end());
int temp=0;
int flag=0;
int first=1;
for(int n=len-1;n>=0;n--){
if(first){
temp=digits[n]+1+flag;
first=0;
}
else{
temp=digits[n]+flag;
}
if(temp>=10){//999
flag=1;
temp-=10;
digits[n]=temp;
}
else{
digits[n]=temp;
flag=0;
break;
}
}
if(flag){
digits.insert(digits.begin(),flag);
}
return digits;
}
};
```