2016-12-06 80 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

相關問題