首页 > 其他 > 详细

leetcode 66 加一

时间:2020-12-15 00:04:13      阅读:26      评论:0      收藏:0      [点我收藏+]
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;

        }
};
```

leetcode 66 加一

原文:https://www.cnblogs.com/zcjblogs/p/14136310.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!