我有一个数组,就像[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。同样,没有连接,分割,变成字符串等。
理想情况下,我想要经典的循环解决方案或递归解决方案。谢谢!
这是我的代表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]
答案 0 :(得分:1)
在这里:
jjChallenge=(arr)=>{
newArray=arr.map((element) => {
return element==9?0:element+1
})
return newArray
}
jjChallenge([2,9,9,9])
答案 1 :(得分:1)
将其反转并加进位,然后再反转
类似 例如
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]
您的代码试图携带,但是从上到下携带很难,因此反过来,从下到上携带起来更容易
答案 2 :(得分:1)
只需将数字加起来然后加一。之后,将其拆分。
简单干净,符合
您不能加入()或concat()。除了添加数组外,您无法通过其他任何方式更改数组。
$this->entityManager->getRepository(Company::class)->find($id);