LeetCode加一

加一

给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

解法一:
效率不高

vector<int> plusOne(vector<int>& digits) {
        int n=0;
        int x=0;
        vector<int>::iterator iter=digits.end()-1;
        *iter+=1; 
        for(;iter>=digits.begin();--iter)
        {

            if(*iter%10==0)
            {
                if(iter!=digits.begin())
                    *(iter-1)+=1;
                else
                    x=1;
                *iter=0;
                continue;
            }
            else
            {
                break;
            }
        }
        vector<int> temp=digits;
        if(x)
            temp.insert(temp.begin(),x);
        return temp;
    }

解法二:
效率较高

vector<int> plusOne(vector<int>& digits) {
        int n=digits.size();
        int toadd=1;
        for(int i=n-1;i>=0;i--){
            int sum=toadd+digits[i];
            digits[i]=sum%10;
            if(sum<10){
                toadd=0;
                break;
            }
        }
        if(toadd==1){
            digits.insert(digits.begin(),1);
        }
        return digits;
    }

猜你喜欢

转载自blog.csdn.net/wjh_init/article/details/80072735