2017-04-07 8 views
-2

newbieここにはJava自体が新しく追加されました。現在、少しプロジェクトに取り組んでおり、私が現在どこにいるのか困惑しています。基本的に私のコードは2つの配列を持ち、これらの配列を自分のメソッドに渡します。この時点で私のメソッドは、配列を見て比較することになっています。このプログラムの場合は10である最も高い共通のintを見つけます。プログラムを10にしてメインに戻して、また、このプログラムでは、その場合には-1を出力する共通の番号が存在しない可能性があると仮定しています。ここまでは私のコードです。共通整数の配列の比較

public class arrayCompare 
{ 
    public static void main(String [] args) 
    { 
     int [] arrayA = {2, 4, 6 , 8, 10, 12}; 
     int [] arrayB = {3, 4, 7 , 10, 11,13}; 

     int result = largestInCommon(arrayA , arrayB); 



    } 

    public static int largestInCommon(int [] A, int[] B) 
    { 
     int counter = 0; 

     for(int x = 0; x < A.length; x++) 
     { 
     if(A[0]==B[x]) 
     { 
      for(int y = 0; y < B.length; y++) 



     } 


     } 
    } 
} 

答えて

1

2つの配列のすべての要素をループします。すべての要素が他の要素と等しく、最後の上位要素よりも高いかどうかをチェックします。

10 

あなたの誤差は第二のループに入る前に要素を比較することである。もしそうであれば、これは出力の新しい高い要素

int[] arrayA = { 2, 4, 6, 8, 10, 12 }; 
    int[] arrayB = { 3, 4, 7, 10, 11, 13 }; 
    int higher = -1; 
    for (int a = 0; a < arrayA.length; a++) { 
     for (int b = 0; b < arrayB.length; b++) { 
      if (arrayA[a] == arrayB[b] && arrayA[a] > higher) { 
       higher = arrayA[a]; 
      } 
     } 
    } 
    System.out.println(higher); 

だろう。あなたはarrayA[]の最初の要素がarrayB[]にも存在し、ユーザーが設定したことがない場合にのみチェックして、新しいより高い値

0

を返すあなたは二つの配列を反復処理し、A[x] == B[y]largest>A[x]、あなたは以下のコードを参照できるかどうかを確認する必要があります。

public static int largestInCommon(int [] A, int[] B) { 
      int largest = 0; 
      for(int x = 0; x < A.length; x++) { 
      for(int y = 0; y < B.length; y++) { 
       if(A[x] == B[y] && largest>A[x]) { 
        largest = A[x]; 
        break;//no need to iterate 2nd array,if common elment found 
       } 
      } 
      } 
      return largest; 
     } 
0

以下が可能です。要素がS であるか否か0のインデックスから順

  • の減少にN-1 BのチェックBハッシュセットS
  • ソート配列に

    1. ストアアレイA。値が見つかった場合は、その値を返します。 b。値が見つからない場合は-1を返します。

    O(sizeA)スペースとO(sizeB)時間で実行できます。 [すでにソートされている場合はO [sizeB * lg(sizeB)]

  • 0
    public static void main(String [] args) 
        { 
         int [] arrayA = {2, 4, 6 , 8, 10, 12}; 
         int [] arrayB = {3, 4, 7 , 10, 11,13}; 
         int result = largestInCommon(arrayA , arrayB); 
         System.out.println("Max "+result); 
        } 
        public static int largestInCommon(int [] A, int[] B) 
        { 
         int counter = -1; 
         for(int x = 0; x < A.length; x++) 
         { 
          for(int y = 0; y < B.length; y++){ 
          if(A[x]==B[y]) 
          { 
           if(counter < A[x]){ 
            counter=A[x]; 
           } 
          } 
         } 
         } 
         return counter; 
        }