LeetCode 66. 加一

78 阅读1分钟

题目

图片.png

思路

这道题,我原先的思路是判断一下每一位有没有进位,维护每一位的进位,这样来想是最常规的,但是这样子比较复杂,需要维护的东西有点多,如果是只判断那一位是不是9,这样子简单一些,因为进位这件事只发生在9的时候。
还有一个问题就是,如果每一位都是9,这时候,加一之后总的位数会变多,需要新开一个vector保存一下新的整数。

代码

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int n=digits.size();
        for(int i=n-1;i>=0;i--){
            if(digits[i]!=9){
                digits[i]++;
                for(int j=i+1;j<n;j++){
                    digits[j]=0;
                }
                return digits;
            }
        }
        vector<int> ans(n+1);
        ans[0]=1;
        return ans;
    }
};