LeetCode66 加一 2018.4.30

题干:

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

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

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

示例 1:

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

示例 2:

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



注意一下9,这个特殊情况,vector的insert函数用法注意下,代码比较繁琐,将就看。。。

class Solution {
public:
    vector<int> plusOne(vector<int>& digits)
    {
        int len = digits.size();
        int sum = 0,c = 0;
        if(len == 1)
        {
            if(digits[0] < 9)
                digits[0]++;
            else
            {
                digits.insert(digits.end(),1,0);
                digits[0] = 1;
            }
        }
        else
        {
            for(int i = len - 1;i >= 0;i--)
            {
                if(i == len - 1)
                {
                    sum = digits[i] + 1;
                    digits[i] = sum % 10;
                    c = sum/10;
                }
                else if(i == 0)
                {
                    sum = digits[i] + c;
                    if(sum >= 10)
                    {
                        digits.insert(digits.end(),1,digits[len - 1]);
                        for(int j = 1;j<len - 1;j++)
                        {
                            digits[j + 1] = digits[j];
                        }
                        digits[0] = sum / 10;
                        digits[1] = sum % 10;
                    }
                    else
                        digits[0] = sum % 10;
                }
                else
                {
                    sum = digits[i] + c;
                    digits[i] = sum % 10;
                    c = sum/10;
                }
            }
        }
        return digits;
    }
};

猜你喜欢

转载自blog.csdn.net/jerseywwwwei/article/details/80147978