给定一个非空数字数组所表示的非负数,将这个数加一。

数字经过排序以便最高位位于数组开头,数组中每个元素只包含一个数字。

你可以假设这个数除了 0 以外,不会有其它数以零开头。

Example 1:

Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

解法1:

根据题意,只要将数组末尾的数加一,然后考虑进位(一次、多次和最高位进位)的情况即可。

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
    const NOTATION = 10;
    for (let i = digits.length - 1; i >= 0; i--) {
        digits[i]++;
        // no carry, break and return
        if (digits[i] < NOTATION) break;
        digits[i] = 0; 
        if (i == 0) digits.unshift(1);
    }
    return digits;
};