2016-12-06 78 views
-1

我无法找出能找出两个整数数组之间差异的算法。 我已经有了一个排序方法,它将会通过所以数字按升序排列。查找两个int数组之间的差异

例如:

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; 
} 
+0

你可以举一些例子输入,它给出了错误的答案? – BretC

+5

你的前两次检查完全一样。你永远不会进入第二个条件... – jgitter

+0

[这里](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html)有一个所有的列表类** Array **提供的方法。对于一个数组中的每个元素,您可以使用binsearch来查找它是否出现在另一个数组中。 –

回答

1

我认为你的条件是有点FUBAR。该处理应该是:

  1. 如果setX的[α]> SETY并[b] - >乙++
  2. 如果setX的[α] < SETY并[b] - >一个++
  3. 否则 - >添加setX的[一]的结果,a ++,b ++
+0

这工作完美!谢谢。 – Pableto

+0

更重要的是,你明白它为什么有效吗? – jgitter

+0

你能否以外行的话来解释一下。我认为多个计数器让我感到困惑。 – Pableto

相关问题