我有一个像这样的数组[1,9,9,9,9,9]。我想将此数组递增1并返回[2,0,0,0,0,0]。这是捕获 - 你不能加入()或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]
你的代码试图携带,但是当从上到下时很难携带,因此反向然后从下往上更容易携带
你走了:
jjChallenge=(arr)=>{
newArray=arr.map((element) => {
return element==9?0:element+1
})
return newArray
}
jjChallenge([2,9,9,9])
只需将数字相加然后加一。之后,拆分它。
符合简单和清洁
你不能加入()或concat()。除了添加数组之外,您无法以任何方式更改数组。
addOne = (data) => {
let sum = 0, digit = data.length - 1
data.forEach(n => sum += n * (10 ** digit--))
return (sum + 1).toString().split("")
}
console.log(addOne([1,8,9]))
console.log(addOne([1,2,3,9,1]))
console.log(addOne([5,7,9,9]))