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

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

想问一下大家它的输出为什么是[ 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日

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像