java - 如何获取 Java 数组中定义可用空间开始和结束的索引

标签 java arrays algorithm

所以我尝试寻找如何解决我遇到的这个问题。我需要 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 值)时,您应该有两个“指针”指向 startstop值,其中stop值可能是 i/也是当前数组指针。 然后,您按顺序遍历数组并有两种一般情况:

  1. 当前索引处的值与 0 的条件不匹配,因此您重置了 startstop指向数组中当前位置的指针并继续。
  2. 您当前的索引符合条件。在这种情况下,您将起始指针保留在上次与条件不匹配的位置,并将停止指针向前移动。如果那么你的完赛标准是连续4个0值匹配,您可以将 for 循环保留在数组上。

在上面提供的代码中,返回/最终 startstop值为:

  • 开始:专门索引
  • 停止:包含性索引。

您说您期望返回的值是 26 ,因为这将是 0 的最长并发系列值(value)观。但由于 4 个连续值的标准已在 2 处匹配。和5 ,上面的代码提供了这些值,但可以轻松地用于返回完整的连续序列。

关于java - 如何获取 Java 数组中定义可用空间开始和结束的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71244080/

相关文章:

java - Java 中的快速排序算法排序不正确(第一个元素作为枢轴)

algorithm - 平面图中的小循环发现

arrays - "[XX000] ERROR: failed to build any 3-way joins"Postgresql 错误是什么意思?

perl - 预增 $#array 是什么意思?

algorithm - 将 3D 平面上的点转换为 2D 点的程序

java - 关于 Java 和 Scala 以及并行化的问题

Java 软件设计 - 循环、对象创建 VS 修改变量。内存、性能和可靠性比较

java - 从 IJavaProject 或 IProject 获取到 org.apache.maven.model.Model

java - 如何从 TabActivity 中的外部 Activity 填充 ListView 适配器

java - while 循环内变量变化