如何将整数数组增加1

时间:2019-04-26 01:27:13

标签: javascript arrays recursion

我有一个数组,就像[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]

3 个答案:

答案 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);