2017-09-17 7 views
0

これはデータ構造用です。私の教授は私が効率的にそれを書いて欲しいと考えています。もし効率が良いとわかったら私は笑です。それは2つのループを使用しないで?2つの配列(Java)の交差点をより効率的に印刷

1ループが最も効率的な

だろう(ハッシュタグを使用しない)ことが有用であることが判明したので、みんな

+1

「一つのループ」とノーハッシュセットは、配列のソートまたは可能な数値の範囲が限られている場合にのみ可能です – Slai

+0

これを試しましたか? http://www.geeksforgeeks.org/union-and-intersection-of-two-sorted-arrays-2/ **時間の複雑さ:O(m + n)** –

+0

こんにちは@Slai、申し訳ありません私はそれを言うのを忘れました、彼らはソートされています:) – Arturo

答えて

1

おかげで、私は答えとして、それを投稿します。多分誰かがそれを使用するでしょう。ここで

答えている:リンクから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); 
    } 
}