gpt4 book ai didi

javascript - 如何将整数数组递增 1

转载 作者:行者123 更新时间:2023-11-30 11:05:23 25 4
gpt4 key购买 nike

我有一个像这样的数组 [1,9,9,9,9,9]。我想将此数组递增 1 并返回 [2,0,0,0,0,0]。这里有一个问题——你不能 join() 或 concat()。除了添加之外,您不能以任何方式更改数组。但是,您可以撤消它,但我不确定这会有多大帮助

此外,这里还有一些其他的例子;

[1,8,9] => [1,9,0];

[1,2,3,9,1] => [1,2,3,9,2];

[5,7,9,9] => [5,8,0,0];

结果只能返回个位数的数组。

基本上,假定该数组是一个数字,然后您将其加 1。同样,没有连接、拆分、变成字符串等。

理想情况下,我想要一个经典的循环解决方案或者可能是一个递归解决方案。谢谢!

这是我的 repl.it https://repl.it/@CharChar5/Code-Challenge

预先感谢您的帮助,如果我的问题标题太长且令人困惑,我深表歉意。我当然正在努力格式化更好的问题并建立更强大的 SO 代表。

https://repl.it/@CharChar5/Code-Challenge

目前这是我的代码:

    jjChallenge=(j)=>{
const len = j.length;
const newArray = [];
for(var i = 0; i<j.length; i++){
if (j[i] == 9) {

if(j[i-1] == 9) {

n = 0;

} else {

newArray[i-1] = newArray[i-1] + 1;
n = 0;
}
newArray.push(n);
} else {
newArray.push(j[i]);
}
}
console.log(newArray)
}


jjChallenge([2,9,9,9]) //works and returns [3,0,0,0]
//[2,9,8,9] doesnt work and returns [3,0,9,0]

最佳答案

反转它并用进位递增然后反转它

有点像例如

function incrementIntArray(arr) {
var reverseArray = arr.reverse();
var newReverseArray = [];
var carry = false;
for (var i = 0; i < arr.length; i++) {
var curNum = reverseArray[i];
if (i == 0 || carry) curNum++;
if (curNum > 9) {
carry = true;
curNum = 0;
} else {
carry = false;
}
newReverseArray[i] = curNum;
}
return newReverseArray.reverse();
}

var arr1 = [1, 8, 9];
var arr2 = [1, 2, 3, 9, 1];
var arr3 = [5, 7, 9, 9];
console.log(incrementIntArray(arr1)); //outputs [1,9,0]
console.log(incrementIntArray(arr2)); //outputs [1,2,3,9,2]
console.log(incrementIntArray(arr3)); //outputs [5,8,0,0]

你的代码本来是想携带的,但是自上而下携带困难,反之则自下而上携带更容易

关于javascript - 如何将整数数组递增 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55859627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com