打印两个数组(Java)的交集更加高效

时间:2017-09-17 20:26:01

标签: arrays intersection

这是针对数据结构的,我的教授希望我高效地编写它,所以如果他找到一个更高效的我做了大声笑那么......有没有办法在不使用两个循环的情况下获得它? (不要使用主题标签)

1循环将是最有效的

谢谢你们

1 个答案:

答案 0 :(得分:2)

由于它证明是有用的,我会将其作为答案发布。也许有人也会使用它。

以下是答案:http://www.geeksforgeeks.org/union-and-intersection-of-two-sorted-arrays-2/

来自链接的例子:

// Java program to find intersection of
// two sorted arrays

class FindIntersection
{
    /* Function prints Intersection of arr1[] and arr2[]
       m is the number of elements in arr1[]
       n is the number of elements in arr2[] */
    static void printIntersection(int arr1[], int arr2[], int m, int n)
    {
      int i = 0, j = 0;
      while (i < m && j < n)
      {
        if (arr1[i] < arr2[j])
          i++;
        else if (arr2[j] < arr1[i])
          j++;
        else
        {
          System.out.print(arr2[j++]+" ");
          i++;
        }
      }
    }

    public static void main(String args[])
    {
        int arr1[] = {1, 2, 4, 5, 6};
        int arr2[] = {2, 3, 5, 7};
        int m = arr1.length;
        int n = arr2.length;
        printIntersection(arr1, arr2, m, n);
    }
}