目录

加一js实现,LeetCode66

目录

加一(js实现,LeetCode:66)

https://i-blog.csdnimg.cn/direct/08567c1662e4422281d286195caf959b.png

这道题看起来就是一个整数+1,然后将整数拆为数组,但是在实现的思路上这更像是一个计算器,+1有三种情况

1、末位+1之后不需要向高位进1

2、末位+1之后需要向高位进1但是整数的量级不变(长度)

3、末位+1之后需要向高位进1但是整数量级变化(长度+1)

这里先上代码

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function (digits) {
    let len = digits.length
    if (digits[len - 1] + 1 < 10) {
        digits[len - 1] += 1
    } else {
        const add = () => {
            digits[len - 1] += 1
            if (digits[len - 1] == 10) {
                digits[len - 1] = 0
                len -= 1
                add()
            }
        }
        add()
        if (digits[0] == 0) {
            digits[0] += 1
            digits.push(0)
        }
        // digits.push(0)

    }
    return digits
};

第一种和第二种情况很好理解:通过本位+1之后与10比较来决定是否需要进位,第三种情况:满10之后将本位置0,所以按照add()递归后的结果首位为0,根据这一特性我们可以判断末位+1之后整数的量级发生了变化,我们将头位加1并且push一位进末位即可