比较数组的公共整数

时间:2017-04-07 07:00:35

标签: java arrays for-loop methods

这里是新手,也是Java本身的新手。目前正在开展一个小项目,我很难在我目前所处的位置。基本上我的代码有两个数组,将这些数组传递给我的方法。此时我的方法应该查看和比较我的数组,找到HIGHEST common int,在这种情况下,这个程序是10,我希望我的程序然后取10并将它返回到main打印出去,此程序也假设可能没有公共号码,在这种情况下它会打印出-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++)



         }


      }
  }
}

4 个答案:

答案 0 :(得分:1)

遍历两个数组的所有元素。检查每个元素是否等于另一个元素,并且还高于最后一个元素。如果是,这将是新的更高元素

    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);

输出:

10

您的错误是在进入第二个循环之前比较元素。您只检查arrayA[]中的第一个元素是否也存在于arrayB[]中且您从未设置并返回新的较高值

答案 1 :(得分: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;
      }

答案 2 :(得分:0)

您可以执行以下操作。

  1. 将数组A存储在哈希集S
  2. 按降序排序数组b
  3. 从0索引到b的n-1检查元素是否在S中 一个。如果找到任何值则返回该值 湾如果没有找到值,则返回-1。
  4. 您可以在O(sizeA)空间和O(sizeB)时间内完成此操作。 [如果已经排序为O [sizeB * lg(sizeB)]

答案 3 :(得分: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;
  }