加一

/**
 * @param {number[]} digits
 * @return {number[]}
 */

当我们对数组 digits 加一时,我们只需要关注{digits}digits 的末尾出现了多少个 99 即可。我们可以考虑如下的三种情况:

如果 {digits}digits 的末尾没有 99,例如 [1, 2, 3],那么我们直接将末尾的数加一,得到 [1, 2, 4]并返回;

如果 {digits}digits 的末尾有若干个 99,例如 [1, 2, 3, 9, 9],那么我们只需要找出从末尾开始的第一个不为 99 的元素,即 33,将该元素加一,得到 [1, 2, 4, 9, 9]。随后将末尾的 9 全部置零,得到 [1,2,4,0,0] 并返回。

如果 {digits}digits 的所有元素都是 99,例如 [9, 9, 9, 9, 9],那么答案为 [1, 0, 0, 0, 0, 0]。我们只需要构造一个长度比 {digits}digits 多 1 的新数组,将首元素置为 1,其余元素置为 0 即可

var plusOne = function(digits) {

    let len = digits.length
    for(let i=len-1;i>=0;--i){
        if(digits[i] !== 9){
            ++digits[i]
            for(let j=i+1;j<len;++j){
                digits[j] = 0
            }
            return digits
        }
    }
    let ans = new Array(len+1).fill(0)
    ans[0] = 1
    return ans
};
posted @ 2021-11-28 23:12  TangTaue  阅读(429)  评论(0编辑  收藏  举报