2016-12-06 6 views
-1

2つの整数配列の違いを見つけるアルゴリズムを理解するのに問題があります。 私はすでにソート方法を持っていますので、番号は昇順になっています。2つの整数配列の違いを見つける

SETX = {1、2、3、4、5}

SETY = {0、2、4、6}

リターン:例えば

SetYには表示されないSetXの番号でなければなりません。私は小さな配列をすれば

のでた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

最初の2つの小切手はまったく同じです。 2番目の条件に入ることはありません。 – jgitter

+0

[ここ](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html)クラス** Array **が提供するメソッド1つの配列の各要素に対して、binsearchを使用して、他の配列に表示されているかどうかを調べることができます。 –

答えて

1

あなたの条件は少しFUBARだと思います。処理は次のようになります。

  1. 場合SETX [A]> SETYの[B] - > B ++
  2. 場合SETX [A] < SETYの[B] - >他++
  3. - > SETXを[A追加します]を結果に代入すると、++、b ++
+0

これは完全に機能します!ありがとうございました。 – Pableto

+0

もっと重要なことは、なぜそれが機能するのか理解していますか? – jgitter

+0

素人の言葉で説明してください。私は複数のカウンターが私を混乱させていると思います。 – Pableto

関連する問題