-4

以前に別の方法で作成された 2 つの配列を比較する助​​けを借りることができます。それらは、enterNumbers、ユーザー入力配列、および drawNumbers、ランダムに生成された配列と呼ばれます。

メソッドヘッダーは次のようになります。

 public static boolean containSameElements(int[] enterNumbers, int[] drawNumbers)
{

}

メソッドは 2 つの配列を比較し、順序に関係なく数値が同じ場合は true を返す必要があります。

答えを探しているのではなく、おそらく開始する場所です。

4

4 に答える 4

1

まあ、あなたはどちらかをすることができます

  1. 2 つのヒストグラムを (ハッシュ ベースのマップ/セットを使用して) 作成し、各配列の要素をカウントしてから、セット/マップを比較します。このソリューションは、平均してO(n) スペースとO(n)時間です。またはこれを見てください。(重複の存在が重要かどうかによって、マップまたはセットが必要になります)MapSet

  2. 別の解決策は、並べ替えと反復です。これはO(nlogn)最悪のケースです。Arrays.sort()この解決策を見てください。

于 2013-08-08T13:31:54.393 に答える
1

前に並べるだけ

  Arrays.sort(enterNumbers);
  Arrays.sort(drawNumbers);

  if(Arrays.equals(enterNumbers, drawNumbers)){
            System.out.println("both are same");
    }
于 2013-08-08T13:35:06.270 に答える
0

これは非常に一般的な「問題」であり、さまざまな方法で解決できます。私があなたを正しく理解していれば、すべての数値は両方の配列内にありますが、同じインデックスにある必要はありませんか?

次に、while/for ループを (2 つのカウンターを使用して、配列ごとに 1 つ) 作成し、最初の配列のインデックス 0 の数値が 2 番目の配列の数値のいずれかと等しいかどうかを確認します。そうでない場合は、while/for ループが実行され、テストは失敗します。そうであれば、最初の配列の次のインデックスに進みますすべてがテストされるまで (最初の配列と 2 番目の配列のすべての数値)、または両方の配列に数値が存在しなくなるまで続行します。幸運を

于 2013-08-08T13:42:05.900 に答える