【发布时间】:2016-12-06 16:22:35
【问题描述】:
我无法找出找出两个整数数组之间差异的算法。 我已经有一个排序方法,它将被运行,所以数字是升序的。
例如:
SetX = { 1, 2, 3, 4, 5 }
SetY = { 0, 2, 4, 6 }
返回的应该是 SetX 中没有出现在 SetY 中的数字。
所以 resultSet = { 1, 3, 5 }
如果我做小数组,有时我会得到正确的答案,但如果我做 4 个或更多整数长的数组,它会给我错误的回报。
有人可以查看我的代码并告诉我我做错了什么吗?
public static int firstFruit(int[] setX, int usedSizeSetX, int[] setY, int usedSizeSet2, int[] resultSet) {
int a = 0, b = 0, c = 0;
while( a < usedSizeSetX && b < usedSizeSetY){
if(setX[a] == setY[b]) {
a++;
} else if(setX[a] == setY[b]){
b++;
} else {
resultSet[c++] = setX[a++];
b++;
}
}
return c;
}
【问题讨论】:
-
你能给出一些输入错误的例子吗?
-
您的前两次检查完全相同。你永远不会进入第二个条件......
-
Here 列出了类 Array 提供的所有方法。对于一个数组中的每个元素,您可以使用 binsearch 来查找它是否出现在另一个数组中。
-
apache 公共库有
CollectionUtils.disjunction() -
你的算法背后的逻辑是什么?我注意到您在
if和else if(setX[a] == setY[b]) 中检查了两次相同的条件.. 这没有意义.. 可能是错字?
标签: java arrays set-difference