为了账号安全,请及时绑定邮箱和手机立即绑定

给定一个整数数组 'num' 返回递增 1 的数组

给定一个整数数组 'num' 返回递增 1 的数组

一只甜甜圈 2021-08-26 15:57:42
给定一个整数数组,返回一个新数组,该数组的原始值加 1。数组中的每个值不能超过 9,并且您不能使用任何将数组转换为整数的函数。IE:Original Array = [1,2,7,9]Returned Array = [2,3,8,0]@param (array) num@return (array)这就是我目前正在做的事情。只是想知道是否有更有效的方法。function increment (num) {    for (var i = num.length - 1; i >= 0; i--) {        num[i]++;        if (num[i] > 9) num[i] = 0;        else break;    }    return num;}console.log(increment([1, 2, 7, 9]));
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

有一个问题:如果输入数组由所有 9 组成,您需要一个所需的输出,例如,[1, 0, 0, 0, 0](而不是[0, 0, 0, 0]):


function increment (num) {

    for (var i = num.length - 1; i >= 0; i--) {

        num[i]++;

        if (num[i] > 9) {

          num[i] = 0;

          if (i === 0) {

            // Last iteration, but we need to carry - unshift a 1:

            num.unshift(1);

          }

        }

        else break;

    }

    return num;

}



console.log(increment([1, 2, 7, 9]));

console.log(increment([3, 9, 9, 9]));

console.log(increment([9, 9, 9, 9]));

console.log(increment([1, 1, 1, 1]));


查看完整回答
反对 回复 2021-08-26
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

有点晚了,但这是一个递归版本,如果参数是[9,9,9,9].


function increment(array, index = NaN) {

    if (isNaN(index)) {

        index = array.length - 1;

    }

    if (++array[index] % 10 === 0) {

        array[index] = 0;

        increment(array, --index);

    }

    return array;

}


console.log(increment([1,2,7,9]))

console.log(increment([9,9,9,9]))


查看完整回答
反对 回复 2021-08-26
  • 2 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信