lintcode-407-加一

407-加一

给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。

样例

给定 [1,2,3] 表示 123, 返回 [1,2,4].
给定 [9,9,9] 表示 999, 返回 [1,0,0,0].

标签

数组 谷歌

思路

模拟加法,从个位(数组最后一位)+1,若此位产生进位,继续向前一位加进位,若是最高位(数组第一位)还有进位,则插入新的最高位

code

class Solution {
public:
    
    /*
     * @param digits: a number represented as an array of digits
     * @return: the result
     */
    vector<int> plusOne(vector<int> digits) {
        // write your code here
        int size = digits.size();
        if (size <= 0) {
            return vector<int>();
        }
        int carry = 0;
        digits[size - 1]++;
        if (digits[size - 1] < 10) {
            return digits;
        }
        carry = 1;
        digits[size - 1] = 0;
        for (int i = size - 2; i >= 0; i--) {
            digits[i] = digits[i] + carry;
            if (digits[i] > 9) {
                carry = 1;
                digits[i] = 0;
            }
            else {
                carry = 0;
                break;
            }
        }
        if (carry == 1) {
            digits.insert(digits.begin(), 1);
        }
        return digits;
    }
};
posted @ 2017-08-13 21:55  LiBaoquan  阅读(174)  评论(0编辑  收藏  举报