增加整数数组中的整数值

时间:2018-10-10 22:24:20

标签: java arrays int depth-first-search

我对增加一维整数数组中的值有疑问。例如,像[0,0,0,0]这样的数组,我想将数组中最右边的位置增加[0,0,0,1]

我想将此值一直增加到设置的限制,例如[0,0,0,3],一旦达到该限制,我想将整数的值增加到最左边的正整数1并重置最右边,所以{{ 1}},然后再重复一遍,最终得到这样的输出

[0,0,1,0]-> [0,0,1,3]-> [0,0,3,3]

请注意,我确实跳过了一些步骤,但是每次我只想增加1。

这就是我要用于DFS的内容。同样,数组的大小可以更改,但是只有在首次创建时才能更改,因此一次运行的大小可能是20,而另一次运行的大小可能是5,因此使用一堆for循环将不起作用。

我也不是在寻找正确答案的答案。

5 个答案:

答案 0 :(得分:0)

也许尝试使用变量来跟踪应该接收下一个增量的索引。

int indicesFilled = 0;

//incrementing 
arr[arr.size() - indicesFilled - 1]++;
if (arr[arr.size() - indicesFilled - 1] >= limit)
    indicesFilled++;

答案 1 :(得分:0)

创建一个整数数组,然后对要更新的数组元素使用增量运算符。

int [] myIntArray = new int[10];
int myCurrentPos = 0;
...
myIntArray[myCurrentPos] = 1;
...
if((myIntArray[myCurrentPos] +1) == myMaxValue) {
  myIntArray[myCurrentPos] = 0;
  myCurrentPos++;
  myIntArray[myCurrentPos] = 1;
    }
  else {
myIntArray[myCurrentPos]++;  }

例如,您将希望扩展我所提供的检查,例如数组大小的其他边界。

答案 2 :(得分:0)

类似

IncrementOne([0,0,3,3], 4, 3)

IncrementOne函数被调用(例如您的示例为{{1}})。如果需要,可以自动派生maxArrayLength。

数组在do / while循环中至少运行一次

在do while循环中,获取数组中最右边的值

增量值

检查值是否大于maxArrayInt

如果是,则将最右边的值设置为0并再次运行循环

如果不是,则使用递增的值设置最右边的值并退出循环

答案 3 :(得分:0)

您基本上想要的是以4为底的数字系统。

Base 4      Base 10
0000    ->    0
0001    ->    1
0002    ->    2
0003    ->    3
0010    ->    4
0011    ->    5
0012    ->    6
0013    ->    7
0020    ->    8

...等等。

因此,请保留一个以10为底的数字计数器,将其转换为您的基(在本例中为4),然后将该表示形式适当地存储在数组中。

答案 4 :(得分:0)

这是一个提示。它与其他响应类似,但可能会有所帮助。

var basify = function (ary, base) {
    return function (amt) {
        return ary.reverse().map( (v, i) => {
            for ( ; ((amt > 0) && (v + 1) % base); v++ ) {
                amt--;
            }
            return v;
        }).reverse()
    }
}

var base4Ary = basify([0,0,0,0,0], 4)
console.log('fill: ' , base4Ary(7)) //  fill: [0, 0, 1, 3, 3]

表达式basify([0,0,0,0,0], 4)(7)本质上是basify(ary, base)(amount),采用:

  • 要填充的数组
  • 数字系统基础
  • 以及分布在整个单元中的数量...基本上是什么时候 停止。