我对增加一维整数数组中的值有疑问。例如,像[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循环将不起作用。
我也不是在寻找正确答案的答案。
答案 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)
,采用: