【发布时间】:2012-11-02 10:58:06
【问题描述】:
让我们有int[] A = new int[1000] 和int[] subA = new int [300] 这样subA \in A(subA 是A 的子集)。如何在Java中以最快的方式找到数组A \ subA?给定数组A 和subA 都已排序。
编辑:抱歉,忘了提到数组包含不同的元素,只是它们包含其他结构的索引,如矩阵行。
我正在考虑这个解决方案:
// 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 中不在 subA 中的元素”?
-
是的,这是数学上的差异,或者只是一组减号。
-
这更多是关于算法而不是 Java,重新标记。
标签: java arrays algorithm sorting set