二十一块石头 2021-12-10 00:08 采纳率: 100%
浏览 57
已结题

力扣加一题写完后输出很奇怪,求解

想问一下大家它的输出为什么是[ 0, 9, '-1': NaN ]啊


var plusOne = function(digits) {
    for(let i = digits.length-1;i >= 0;i--){ //循环,使数组最后一位等于9,且前一位不等于9时,数组输出完成+1的目的
        if((digits[i] == 9) && (digits[i-1] != 9)){
            digits[i] = 0;
            digits[i-1] = digits[i-1] + 1;
            return digits;
        }
    }
    for(let i = digits.length-1;i >= 0;i--){ //循环,使数组最后一位不等于9时,直接加1,数组输出完成+1的目的
        if(digits[i] != 9){
            digits[i] = digits[i] + 1;
            return digits;
        }
    }
    for(let i = 0;i < digits.length;i++){ //如果前两项条件都不符合,那么此时数组的每一位都是9,所以我们使数组每一位都变为0
       digits[i] = 0;
    }
    digits.unshift(1); //在数组前面加入元素1,使它完成加1的目的
    return digits;
};
console.log(plusOne([9,9]));

  • 写回答

1条回答 默认 最新

  • 技术专家团-Bamboo 2021-12-10 01:05
    关注

    不需要那么麻烦,参考下我下面的代码

    var plusOne = function(digits) {
        let r = 0;
        for(let i=digits.length - 1;i>=0;i--){
            digits[i]+=1;   
            r =parseInt(digits[i]/10);
            digits[i]%=10;
            if(r==0){
                break;
            }
        }
        if(r==1){
            digits.unshift(1);
        }
        return digits;
    };
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 12月10日