gpt4 book ai didi

java - 在 Java 中查找 int 子数组的补充

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:22 25 4
gpt4 key购买 nike

让我们有 int[] A = new int[1000]int[] subA = new int [300] 这样 subA\in A (subAA 的子集)。如何在 Java 中以最快的方式查找数组 A\subA?给定的数组 AsubA 都已排序。

编辑:抱歉,忘了说数组包含不同的元素,只是它们包含另一种结构的索引,例如矩阵行。

我正在考虑这个解决方案:

// supp is short for supplement
int[] supp = new int[A.length - subA.length];
int j = A[0], c = 0;
for (int i = 0; i < subA.lengh; i++) {
// elegantly can be: while (j < subA[i]) supp[c++] = j++;
while (j < subA[i]) {
supp[c] = j;
c++; j++;
}
j = subA[i] + 1;
}

目前正在测试这种方法。答案准备好后我会回来。

最佳答案

尝试这样的事情:

// A index
int ai = 0;
// subA index
int sai = 0;
// result array
int[] result = new int[A.length - subA.length];
// index in result array
int resi = 0;

while ai < A.length && sai < subA.length;
// same elements - ignore
if (A[ai] == subA[sai]) {
ai++;
sai++;
// found an element in A that does not exist in subA
} else {
// Store element
result[resi] = A[ai];
resi++;
ai++;
}
}

// Store elements that are left in A
for (;ai < A.length; ai++, resi++) {
result[resi] = A[ai];
}

关于java - 在 Java 中查找 int 子数组的补充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13193880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com