算法-加一

算法-加一

Posted by limantang on March 21, 2019

加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

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

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

示例 1:

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

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

额外考虑: 输入: [9] 输出: [1, 0]

    /**
     * @param {number[]} digits
     * @return {number[]}
     */
        
    const plusOne = function (digits) {
        let count = digits.length - 1;
        while (count) {
            if (digits[count] !== 9) {
                digits[count] += 1;
                return digits;
            } else {
                digits[count] = 0;
            }
            count--;
        }
        const result = [1];
        return result.concat(digits);
    }

思路

首先要考虑最基本的情况,数组的长度不改变,也就是数组的第一位不是9,只考虑除了第一位以外的数组元素即可, 个位是9加一个位变0十位加一,以此类推,十位是9十位变0百位加一

如果数组的首位是9,那就要考虑除了数组第一位以外的所有元素都是9的情况