作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的数组 [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/
我是一名优秀的程序员,十分优秀!