所以我尝试寻找如何解决我遇到的这个问题。我需要 Java 中的某种方法来遍历数组并找到空(零)的槽(索引),例如我有这个数组:
int[] arr = {1,1,0,0,0,0,0,1,0,0};
所以我想从这里获取两个值。如果我的 objSize(见下文)是 4。我想获取 2 和 6 的数组索引,因为 objSize 的大小适合那里。这些索引指定可用的空间。我似乎真的无法弄清楚这一点。
for (int x = 0; x < matrix.length; x++) {
if (arr[x] == 0) {
start = col;
if (start == objSize) {
stop = col;
}
} else {
start = 0;
}
}
我该怎么做?我做了一次尝试,但由于明显的原因而失败了。
最佳答案
首先,我不太明白您已经提交的代码背后的意图,因此很难对其进行改进。相反,我将引导您完成类似的解决方案,如下所示。
int objsize = 4;
int[] arr = {1,1,0,0,0,0,0,1,0,0};
int start = 0;
int stop = 0;
for(int i = 0; i < arr.length - 1; i++) {
if(arr[i] != 0){
start = i;
stop = i;
continue;
} else {
stop++;
if(stop-start >= objsize) {
break;
}
}
}
当在数组中查找与给定条件匹配的序列(在您的情况下是 4 个连续的 0 值)时,您应该有两个“指针”指向 start
和stop
值,其中stop
值可能是 i
/也是当前数组指针。
然后,您按顺序遍历数组并有两种一般情况:
- 当前索引处的值与
0
的条件不匹配,因此您重置了start
和stop
指向数组中当前位置的指针并继续。 - 您当前的索引符合条件。在这种情况下,您将起始指针保留在上次与条件不匹配的位置,并将停止指针向前移动。如果那么你的完赛标准是连续4个
0
值匹配,您可以将 for 循环保留在数组上。
在上面提供的代码中,返回/最终 start
和stop
值为:
- 开始:专门索引
- 停止:包含性索引。
您说您期望返回的值是 2
和6
,因为这将是 0
的最长并发系列值(value)观。但由于 4 个连续值的标准已在 2
处匹配。和5
,上面的代码提供了这些值,但可以轻松地用于返回完整的连续序列。
关于java - 如何获取 Java 数组中定义可用空间开始和结束的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71244080/