给定一个整数数组‘num’return 该数组递增 1

Given an array of integers ‘num’ return the array incremented by 1

给定一个整数数组,return 一个新数组,其原始值增加 1。

数组中的每个值不能超过 9,并且不能使用任何将数组转换为整数的函数。

即:

Original Array = [1,2,7,9]
Returned Array = [2,3,8,0]

@param (数组) num
@return(数组)

这就是我目前正在做的事情。只是想知道是否有什么会更有效。

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]));

存在一个问题:如果输入数组全部由 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]));

有点晚了,但这是一个递归版本,如果参数是 [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]))