leetcode 66 加一

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;

        }
};
```
posted @ 2020-12-14 23:18  风早&爽子  阅读(57)  评论(0)    收藏  举报