<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 查找兩個未排序數組的并集和交集 > 原文: [https://www.geeksforgeeks.org/find-union-and-intersection-of-two-unsorted-arrays/](https://www.geeksforgeeks.org/find-union-and-intersection-of-two-unsorted-arrays/) 給定兩個表示兩個集合的未排序數組(每個數組中的元素都不同),找到兩個數組的并集和交集。 例如,如果輸入數組為: arr1 [] = {7,1,5,2,3,6} arr2 [] = {3,8,6,20,7} 然后,您的程序應將 Union 打印為{1,2,3,5,6,7,8,20},并將 Intersection 打印為{3,6,7}。 請注意,并集和相交的元素可以按任何順序打印。 **方法 1(樸素)** ***聯合**:* 1)將聯合 U 初始化為空。 2)將第一個數組的所有元素復制到 U。 3)對第二個數組的每個元素 x 執行以下操作: …..a)如果第一個數組中不存在 x,則將 x 復制到 U. 4)返回 U。 ***交集**:* 1)將交集 I 初始化為空。 2)對第一個數組 的每個元素 x 執行以下操作……..a)如果第二個數組中存在 x,則將 x 復制到 I。 4)返回 I。 對于兩種操作,此方法的時間復雜度均為 O(mn)。 其中,m 和 n 分別是 arr1 []和 arr2 []中的元素數。 **方法 2(使用排序)** 1)對 arr1 []和 arr2 []進行排序。 此步驟需要 O(mLogm + nLogn)時間。 2)使用 [O(m + n)算法找到兩個排序數組](https://www.geeksforgeeks.org/union-and-intersection-of-two-sorted-arrays-2/)的并集和交集。 此方法的總時間復雜度為 O(mLogm + nLogn)。 **方法 3(使用排序和搜索)** ***聯合**:* 1)將聯合 U 初始化為空。 2)找到 m 和 n 中的較小者,并對較小的數組進行排序。 3)將較小的數組復制到 U。 4)對于較大數組的每個元素 x,請按照 進行…….b)在較小數組中二分搜索 x。 如果 x 不存在,則將其復制到 U。 5)返回 U。 ***交集**:* 1)將交集 I 初始化為空。 2)找到 m 和 n 中的較小者,并對較小的數組進行排序。 3)對于較大數組的每個元素 x,請按照 …….b)在較小數組中進行二分搜索 x。 如果存在 x,則將其復制到 I。 4)返回 I。 該方法的時間復雜度是 min(mLogm + nLogm,mLogn + nLogn),也可以寫成 O((m + n)Logm,(m + n)Logn)。 當兩個數組的大小之間的差異很大時,此方法比以前的方法要好得多。 感謝 [use_the_force](https://disqus.com/by/use_the_force/) 在此處的注釋[中建議了此方法。](https://www.geeksforgeeks.org/union-and-intersection-of-two-sorted-arrays-2/) 下面是此方法的實現。 ## C++ ```cpp // A C++ program to print union and intersection? /// of two unsorted arrays #include <iostream> #include <algorithm> using namespace std; int binarySearch(int arr[], int l, int r, int x); // Prints union of arr1[0..m-1] and arr2[0..n-1] void printUnion(int arr1[], int arr2[], int m, int n) { ????// Before finding union, make sure arr1[0..m-1]? ????// is smaller ????if (m > n) ????{ ????????int *tempp = arr1; ????????arr1 = arr2; ????????arr2 = tempp; ????????int temp = m; ????????m = n; ????????n = temp; ????} ????// Now arr1[] is smaller ????// Sort the first array and print its elements (these two ????// steps can be swapped as order in output is not important) ????sort(arr1, arr1 + m); ????for (int i=0; i<m; i++) ????????cout << arr1[i] << " "; ????// Search every element of bigger array in smaller array ????// and print the element if not found ????for (int i=0; i<n; i++) ????????if (binarySearch(arr1, 0, m-1, arr2[i]) == -1) ????????????cout << arr2[i] << " "; } // Prints intersection of arr1[0..m-1] and arr2[0..n-1] void printIntersection(int arr1[], int arr2[], int m, int n) { ????// Before finding intersection, make sure arr1[0..m-1]? ????// is smaller ????if (m > n) ????{ ????????int *tempp = arr1; ????????arr1 = arr2; ????????arr2 = tempp; ????????int temp = m; ????????m = n; ????????n = temp; ????} ????// Now arr1[] is smaller ????// Sort smaller array arr1[0..m-1] ????sort(arr1, arr1 + m); ????// Search every element of bigger array in smaller ????// array and print the element if found ????for (int i=0; i<n; i++) ????????if (binarySearch(arr1, 0, m-1, arr2[i]) != -1) ????????????cout << arr2[i] << " "; } // A recursive binary search function. It returns? // location of x in given array arr[l..r] is present,? // otherwise -1 int binarySearch(int arr[], int l, int r, int x) { ????if (r >= l) ????{ ????????int mid = l + (r - l)/2; ????????// If the element is present at the middle itself ????????if (arr[mid] == x)? return mid; ????????// If element is smaller than mid, then it can only ????????// be presen in left subarray ????????if (arr[mid] > x)? ??????????return binarySearch(arr, l, mid-1, x); ????????// Else the element can only be present in right subarray ????????return binarySearch(arr, mid+1, r, x); ????} ????// We reach here when element is not present in array ????return -1; } /* Driver program to test above function */ int main() { ????int arr1[] = {7, 1, 5, 2, 3, 6}; ????int arr2[] = {3, 8, 6, 20, 7}; ????int m = sizeof(arr1)/sizeof(arr1[0]); ????int n = sizeof(arr2)/sizeof(arr2[0]); ????cout << "Union of two arrays is n"; ????printUnion(arr1, arr2, m, n); ????cout << "nIntersection of two arrays is n"; ????printIntersection(arr1, arr2, m, n); ????return 0; } ``` ## Java ```java // A Java program to print union and intersection? /// of two unsorted arrays import java.util.Arrays; class UnionAndIntersection? { ????// Prints union of arr1[0..m-1] and arr2[0..n-1] ????void printUnion(int arr1[], int arr2[], int m, int n)? ????{ ????????// Before finding union, make sure arr1[0..m-1]? ????????// is smaller ????????if (m > n)? ????????{ ????????????int tempp[] = arr1; ????????????arr1 = arr2; ????????????arr2 = tempp; ????????????int temp = m; ????????????m = n; ????????????n = temp; ????????} ????????// Now arr1[] is smaller ????????// Sort the first array and print its elements (these two ????????// steps can be swapped as order in output is not important) ????????Arrays.sort(arr1); ????????for (int i = 0; i < m; i++) ????????????System.out.print(arr1[i] + " "); ????????// Search every element of bigger array in smaller array ????????// and print the element if not found ????????for (int i = 0; i < n; i++)? ????????{ ????????????if (binarySearch(arr1, 0, m - 1, arr2[i]) == -1) ????????????????System.out.print(arr2[i] + " "); ????????} ????} ????// Prints intersection of arr1[0..m-1] and arr2[0..n-1] ????void printIntersection(int arr1[], int arr2[], int m, int n)? ????{ ????????// Before finding intersection, make sure arr1[0..m-1]? ????????// is smaller ????????if (m > n)? ????????{ ????????????int tempp[] = arr1; ????????????arr1 = arr2; ????????????arr2 = tempp; ????????????int temp = m; ????????????m = n; ????????????n = temp; ????????} ????????// Now arr1[] is smaller ????????// Sort smaller array arr1[0..m-1] ????????Arrays.sort(arr1); ????????// Search every element of bigger array in smaller array ????????// and print the element if found ????????for (int i = 0; i < n; i++)? ????????{ ????????????if (binarySearch(arr1, 0, m - 1, arr2[i]) != -1)? ????????????????System.out.print(arr2[i] + " "); ????????} ????} ????// A recursive binary search function. It returns location of x in ????// given array arr[l..r] is present, otherwise -1 ????int binarySearch(int arr[], int l, int r, int x)? ????{ ????????if (r >= l)? ????????{ ????????????int mid = l + (r - l) / 2; ????????????// If the element is present at the middle itself ????????????if (arr[mid] == x) ????????????????return mid; ????????????// If element is smaller than mid, then it can only? ????????????// be present in left subarray ????????????if (arr[mid] > x) ????????????????return binarySearch(arr, l, mid - 1, x); ????????????// Else the element can only be present in right subarray ????????????return binarySearch(arr, mid + 1, r, x); ????????} ????????// We reach here when element is not present in array ????????return -1; ????} ????// Driver program to test above functions ????public static void main(String[] args)? ????{ ????????UnionAndIntersection u_i = new UnionAndIntersection(); ????????int arr1[] = {7, 1, 5, 2, 3, 6}; ????????int arr2[] = {3, 8, 6, 20, 7}; ????????int m = arr1.length; ????????int n = arr2.length; ????????System.out.println("Union of two arrays is "); ????????u_i.printUnion(arr1, arr2, m, n); ????????System.out.println(""); ????????System.out.println("Intersection of two arrays is "); ????????u_i.printIntersection(arr1, arr2, m, n); ????} } ``` ## Python3 ```py # A Python3 program to print union and intersection? # of two unsorted arrays # Prints union of arr1[0..m-1] and arr2[0..n-1] def printUnion(arr1, arr2, m, n): ????# Before finding union, make sure arr1[0..m-1]? ????# is smaller ????if (m > n): ????????tempp = arr1; ????????arr1 = arr2; ????????arr2 = tempp; ????????temp = m; ????????m = n; ????????n = temp; ????# Now arr1[] is smaller ????# Sort the first array and print its elements (these two ????# steps can be swapped as order in output is not important) ????arr1.sort(); ????for i in range(0,m): ????????print(arr1[i],end=" "); ????# Search every element of bigger array in smaller array ????# and print the element if not found ????for i in range(0,n): ????????if (binarySearch(arr1, 0, m - 1, arr2[i]) == -1): ????????????print(arr2[i],end=" "); # Prints intersection of arr1[0..m-1] and arr2[0..n-1] def printIntersection(arr1, arr2, m, n): ????# Before finding intersection, make sure arr1[0..m-1]? ????# is smaller ????if (m > n): ????????tempp = arr1; ????????arr1 = arr2; ????????arr2 = tempp; ????????temp = m; ????????m = n; ????????n = temp; ????# Now arr1[] is smaller ????# Sort smaller array arr1[0..m-1] ????arr1.sort(); ????# Search every element of bigger array in smaller ????# array and print the element if found ????for i in range(0,n): ????????if (binarySearch(arr1, 0, m - 1, arr2[i]) != -1): ????????????print(arr2[i],end=" "); # A recursive binary search function. It returns? # location of x in given array arr[l..r] is present,? # otherwise -1 def binarySearch(arr, l, r,x): ????if (r >= l): ????????mid = int(l + (r - l)/2); ????????# If the element is present at the middle itself ????????if (arr[mid] == x): ????????????return mid; ????????# If element is smaller than mid, then it can only ????????# be presen in left subarray ????????if (arr[mid] > x): ????????????return binarySearch(arr, l, mid - 1, x); ????????# Else the element can only be present in right subarray ????????return binarySearch(arr, mid + 1, r, x); ????# We reach here when element is not present in array ????return -1; # Driver program to test above function? arr1 = [7, 1, 5, 2, 3, 6]; arr2 = [3, 8, 6, 20, 7]; m = len(arr1); n = len(arr2); print("Union of two arrays is "); printUnion(arr1, arr2, m, n); print("\nIntersection of two arrays is "); printIntersection(arr1, arr2, m, n); # This code is contributed by mits ``` ## C# ```cs // A C# program to print union and? // intersection of two unsorted arrays using System; class GFG { // Prints union of arr1[0..m-1] and arr2[0..n-1] static void printUnion(int []arr1, int []arr2, ???????????????????????????????????int m, int n)? { ????// Before finding union, make? ????// sure arr1[0..m-1] is smaller ????if (m > n)? ????{ ????????int []tempp = arr1; ????????arr1 = arr2; ????????arr2 = tempp; ????????int temp = m; ????????m = n; ????????n = temp; ????} ????// Now arr1[] is smaller ????// Sort the first array and print ????// its elements (these two steps can ????// be swapped as order in output is? ????// not important) ????Array.Sort(arr1); ????for (int i = 0; i < m; i++) ????????Console.Write(arr1[i] + " "); ????// Search every element of bigger? ????// array in smaller array and print? ????// the element if not found ????for (int i = 0; i < n; i++)? ????{ ????????if (binarySearch(arr1, 0, m - 1,? ?????????????????????????arr2[i]) == -1) ????????????Console.Write(arr2[i] + " "); ????} } // Prints intersection of arr1[0..m-1]? // and arr2[0..n-1] static void printIntersection(int []arr1, ??????????????????????????????int []arr2,? ??????????????????????????????int m, int n)? { ????// Before finding intersection,? ????// make sure arr1[0..m-1] is smaller ????if (m > n)? ????{ ????????int []tempp = arr1; ????????arr1 = arr2; ????????arr2 = tempp; ????????int temp = m; ????????m = n; ????????n = temp; ????} ????// Now arr1[] is smaller ????// Sort smaller array arr1[0..m-1] ????Array.Sort(arr1); ????// Search every element of bigger array in? ????// smaller array and print the element if found ????for (int i = 0; i < n; i++)? ????{ ????????if (binarySearch(arr1, 0, m - 1, arr2[i]) != -1)? ????????????Console.Write(arr2[i] + " "); ????} } // A recursive binary search function.? // It returns location of x in given? // array arr[l..r] is present, otherwise -1 static int binarySearch(int []arr, int l,? ????????????????????????int r, int x)? { ????if (r >= l)? ????{ ????????int mid = l + (r - l) / 2; ????????// If the element is present at ????????// the middle itself ????????if (arr[mid] == x) ????????????return mid; ????????// If element is smaller than mid, then it? ????????// can only be present in left subarray ????????if (arr[mid] > x) ????????????return binarySearch(arr, l, mid - 1, x); ????????// Else the element can only be? ????????// present in right subarray ????????return binarySearch(arr, mid + 1, r, x); ????} ????// We reach here when element is ????// not present in array ????return -1; } // Driver Code static public void Main () { ????int []arr1 = {7, 1, 5, 2, 3, 6}; ????int []arr2 = {3, 8, 6, 20, 7}; ????int m = arr1.Length; ????int n = arr2.Length; ????Console.WriteLine("Union of two arrays is "); ????printUnion(arr1, arr2, m, n); ????Console.WriteLine(""); ????Console.WriteLine("Intersection of two arrays is "); ????printIntersection(arr1, arr2, m, n); } } // This code is contributed? // by Sach_Code ``` ## PHP ```php <?php // A PHP program to print union and intersection? /// of two unsorted arrays // Prints union of arr1[0..m-1] and arr2[0..n-1] function printUnion($arr1, $arr2, $m, $n) { ????// Before finding union, make sure arr1[0..m-1]? ????// is smaller ????if ($m > $n) ????{ ????????$tempp = $arr1; ????????$arr1 = $arr2; ????????$arr2 = $tempp; ????????$temp = $m; ????????$m = $n; ????????$n = $temp; ????} ????// Now arr1[] is smaller ????// Sort the first array and print its elements (these two ????// steps can be swapped as order in output is not important) ????sort($arr1); ????for ($i = 0; $i < $m; $i++) ????????echo $arr1[$i]." "; ????// Search every element of bigger array in smaller array ????// and print the element if not found ????for ($i = 0; $i < $n; $i++) ????????if (binarySearch($arr1, 0, $m - 1, $arr2[$i]) == -1) ????????????echo $arr2[$i]." "; } // Prints intersection of arr1[0..m-1] and arr2[0..n-1] function printIntersection($arr1, $arr2, $m, $n) { ????// Before finding intersection, make sure arr1[0..m-1]? ????// is smaller ????if ($m > $n) ????{ ????????$tempp = $arr1; ????????$arr1 = $arr2; ????????$arr2 = $tempp; ????????$temp = $m; ????????$m = $n; ????????$n = $temp; ????} ????// Now arr1[] is smaller ????// Sort smaller array arr1[0..m-1] ????sort($arr1); ????// Search every element of bigger array in smaller ????// array and print the element if found ????for ($i = 0; $i < $n; $i++) ????????if (binarySearch($arr1, 0, $m - 1, $arr2[$i]) != -1) ????????????echo $arr2[$i]." "; } // A recursive binary search function. It returns? // location of x in given array arr[l..r] is present,? // otherwise -1 function binarySearch($arr, $l, $r,$x) { ????if ($r >= $l) ????{ ????????$mid = (int)($l + ($r - $l)/2); ????????// If the element is present at the middle itself ????????if ($arr[$mid] == $x) return $mid; ????????// If element is smaller than mid, then it can only ????????// be presen in left subarray ????????if ($arr[$mid] > $x)? ????????return binarySearch($arr, $l, $mid - 1, $x); ????????// Else the element can only be present in right subarray ????????return binarySearch($arr, $mid + 1, $r, $x); ????} ????// We reach here when element is not present in array ????return -1; } /* Driver program to test above function */ ????$arr1 = array(7, 1, 5, 2, 3, 6); ????$arr2 = array(3, 8, 6, 20, 7); ????$m = count($arr1); ????$n = count($arr2); ????echo "Union of two arrays is \n"; ????printUnion($arr1, $arr2, $m, $n); ????echo "\nIntersection of two arrays is \n"; ????printIntersection($arr1, $arr2, $m, $n); // This code is contributed by mits ?> ``` **輸出**: ``` Union of two arrays is 3 6 7 8 20 1 5 2 Intersection of two arrays is 7 3 6 ``` **另一種方法(當數組中的元素可能不同時)**: ## C ``` // C code to find intersection when // elements may not be distinct #include<bits/stdc++.h> using namespace std; // Function to find intersection void intersection(int a[], int b[], int n, int m) { ????int i = 0, j = 0; ????while (i < n && j < m)? ????{ ????????if (a[i] > b[j])? ????????{ ????????????j++; ????????}? ????????else? ????????if (b[j] > a[i])? ????????{ ????????????i++; ????????}? ????????else? ????????{ ????????????// when both are equal ????????????cout << a[i] << " "; ????????????i++; ????????????j++; ????????} ????} } // Driver Code int main() { ????int a[] = {1, 2, 3, 3, 4, 5, 5, 6}; ????int b[] = {3, 3, 5}; ????int n = sizeof(a)/sizeof(a[0]); ????int m = sizeof(b)/sizeof(b[0]); ????intersection(a, b, n, m); } ``` ## Java ```java // Java code to find intersection when // elements may not be distinct import java.io.*; class GFG { // Function to find intersection static void intersection(int a[], int b[], int n, int m) { ????int i = 0, j = 0; ????while (i < n && j < m)? ????{ ????????if (a[i] > b[j])? ????????{ ????????????j++; ????????}? ????????else ????????if (b[j] > a[i])? ????????{ ????????????i++; ????????}? ????????else ????????{ ????????????// when both are equal ????????????System.out.print(a[i] + " "); ????????????i++; ????????????j++; ????????} ????} } // Driver Code ????public static void main (String[] args) { ????int a[] = {1, 2, 3, 3, 4, 5, 5, 6}; ????int b[] = {3, 3, 5}; ????int n = a.length; ????int m = b.length; ????intersection(a, b, n, m); ????} } ``` ## Python 3 ``` # Python 3 code to find intersection? # when elements may not be distinct # Function to find intersection def intersection(a, b, n, m): ????i = 0 ????j = 0 ????while (i < n and j < m) : ????????if (a[i] > b[j]) : ????????????j += 1 ????????else: ????????????if (b[j] > a[i]) : ????????????????i += 1 ????????????else: ????????????????# when both are equal ????????????????print(a[i], end = " ") ????????????????i += 1 ????????????????j += 1 # Driver Code if __name__ =="__main__": ????a = [1, 2, 3, 3, 4, 5, 5, 6] ????b = [3, 3, 5] ????n = len(a) ????m = len(b) ????intersection(a, b, n, m) # This code is contributed by Ita_c ``` ## C# ``` // C# code to find intersection when // elements may not be distinct using System; class GFG { // Function to find intersection static void intersection(int[] a, int[] b, int n, int m) { ????int i = 0, j = 0; ????while (i < n && j < m)? ????{ ????????if (a[i] > b[j])? ????????{ ????????????j++; ????????}? ????????else ????????if (b[j] > a[i])? ????????{ ????????????i++; ????????}? ????????else ????????{ ????????????// when both are equal ????????????Console.Write(a[i] + " "); ????????????i++; ????????????j++; ????????} ????} } // Driver Code ????public static void Main () { ????int[] a = {1, 2, 3, 3, 4, 5, 5, 6}; ????int[] b = {3, 3, 5}; ????int n = a.Length; ????int m = b.Length; ????intersection(a, b, n, m); ????} } // this code is contributed by mukul singh ``` ## PHP ```php <?php // PHP code to find intersection when // elements may not be distinct // Function to find intersection function intersection($a, $b, $n, $m) { ????$i = 0; $j = 0; ????while ($i < $n && $j < $m)? ????{ ????????if ($a[$i] > $b[$j])? ????????{ ????????????$j++; ????????}? ????????else ????????if ($b[$j] > $a[$i])? ????????{ ????????????$i++; ????????}? ????????else ????????{ ????????????// when both are equal ????????????echo($a[$i] . " "); ????????????$i++; ????????????$j++; ????????} ????} } // Driver Code $a = array(1, 2, 3, 3, 4, 5, 5, 6); $b = array(3, 3, 5); $n = sizeof($a); $m = sizeof($b); intersection($a, $b, $n, $m); // This code is contributed? // by Mukul Singh ?> ``` **輸出**: ``` 3 3 5 ``` 感謝 Sanny Kumar 建議使用上述方法。 **方法 4(使用散列)** ***聯合**:* **聯合** 1。 初始化一個空哈希集 **hs** 。 2.遍歷第一個數組并將第一個數組的每個元素放入集合 S 中。 3.對第二個數組重復此過程。 4.打印設置 **hs** 。 **交叉點** 1.初始化一個空集 hs。 2.遍歷第一個數組并將第一個數組的每個元素放入集合 S 中。 3.對于第二個數組的每個元素 x,請執行以下操作: 在集合 hs 中搜索 x 。 如果存在 x,則進行打印。 在哈希表搜索和插入操作花費Θ(1)時間的假設下,此方法的時間復雜度為Θ(m + n)。 ## C++ ``` // CPP program to find union and intersection // using sets #include <bits/stdc++.h> using namespace std; // Prints union of arr1[0..n1-1] and arr2[0..n2-1] void printUnion(int arr1[], int arr2[], int n1, int n2) { ????set<int> hs; ????// Inhsert the elements of arr1[] to set hs ????for (int i = 0; i < n1; i++) ????????hs.insert(arr1[i]); ????// Insert the elements of arr2[] to set hs ????for (int i = 0; i < n2; i++) ????????hs.insert(arr2[i]); ????// Print the content of set hs ????for (auto it = hs.begin(); it != hs.end(); it++) ????????cout << *it << " "; ????cout << endl; } // Prints intersection of arr1[0..n1-1] and // arr2[0..n2-1] void printIntersection(int arr1[], int arr2[], ???????????????????????????????int n1, int n2) { ????set<int> hs; ????// Insert the elements of arr1[] to set S ????for (int i = 0; i < n1; i++) ????????hs.insert(arr1[i]); ????for (int i = 0; i < n2; i++) ????????// If element is present in set then ????????// push it to vector V ????????if (hs.find(arr2[i]) != hs.end()) ????????????cout << arr2[i] << " "; } // Driver Program int main() { ????int arr1[] = { 7, 1, 5, 2, 3, 6 }; ????int arr2[] = { 3, 8, 6, 20, 7 }; ????int n1 = sizeof(arr1) / sizeof(arr1[0]); ????int n2 = sizeof(arr2) / sizeof(arr2[0]); ????printUnion(arr1, arr2, n1, n2); ????printIntersection(arr1, arr2, n1, n2); ????return 0; } ``` ## Java ```java // Java program to find union and intersection // using Hashing import java.util.HashSet; class Test {??? ????// Prints union of arr1[0..m-1] and arr2[0..n-1] ????static void printUnion(int arr1[], int arr2[]) ????{ ????????HashSet<Integer> hs = new HashSet<>(); ????????for (int i = 0; i < arr1.length; i++)? ????????????hs.add(arr1[i]);???????? ????????for (int i = 0; i < arr2.length; i++)? ????????????hs.add(arr2[i]); ????????System.out.println(hs);???????? ????} ????// Prints intersection of arr1[0..m-1] and arr2[0..n-1] ????static void printIntersection(int arr1[], int arr2[]) ????{ ????????HashSet<Integer> hs = new HashSet<>(); ????????HashSet<Integer> hs1 = new HashSet<>(); ????????for (int i = 0; i < arr1.length; i++)? ????????????hs.add(arr1[i]); ????????for (int i = 0; i < arr2.length; i++)? ????????????if (hs.contains(arr2[i])) ???????????????System.out.print(arr2[i] + " "); ????} ????// Driver method to test the above function ????public static void main(String[] args)? ????{ ????????int arr1[] = {7, 1, 5, 2, 3, 6}; ????????int arr2[] = {3, 8, 6, 20, 7}; ????????System.out.println("Union of two arrays is : "); ????????printUnion(arr1, arr2); ????????System.out.println("Intersection of two arrays is : "); ????????printIntersection(arr1, arr2);???????? ????} } ``` ## Python ``` # Python program to find union and intersection? # using sets def printUnion(arr1, arr2, n1, n2): ????hs = set() ????# Inhsert the elements of arr1[] to set hs? ????for i in range(0, n1): ????????hs.add(arr1[i]) ????# Inhsert the elements of arr1[] to set hs? ????for i in range(0, n2): ????????hs.add(arr2[i]) ????print("Union:") ????for i in hs: ????????print(i, end=" ") ????print("\n") ????# Prints intersection of arr1[0..n1-1] and? ????# arr2[0..n2-1]? def printIntersection(arr1, arr2, n1, n2): ????hs = set() ????# Insert the elements of arr1[] to set S? ????for i in range(0, n1): ????????hs.add(arr1[i]) ????print("Intersection:") ????for i in range(0,n2): ????????# If element is present in set then? ????????# push it to vector V ????????if arr2[i] in hs: ????????????print(arr2[i],end=" ") # Driver Program? arr1 = [ 7, 1, 5, 2, 3, 6 ]? arr2 = [ 3, 8, 6, 20, 7 ]? n1 = len(arr1) n2 = len(arr2) printUnion(arr1, arr2, n1, n2)? printIntersection(arr1, arr2, n1, n2)? # This artice is contributed by Kumar Suman . ``` ## C# ``` // C# program to find union and intersection // using Hashing using System; using System.Linq; using System.Collections.Generic; class GFG {? ????// Prints union of arr1[0..m-1] and arr2[0..n-1] ????static void printUnion(int []arr1, int []arr2) ????{ ????????HashSet<int> hs = new HashSet<int>(); ????????for (int i = 0; i < arr1.Length; i++)? ????????????hs.Add(arr1[i]);????? ????????for (int i = 0; i < arr2.Length; i++)? ????????????hs.Add(arr2[i]); ????????????Console.WriteLine(string.Join(", ", hs));????? ????} ????// Prints intersection of arr1[0..m-1] and arr2[0..n-1] ????static void printIntersection(int []arr1, int []arr2) ????{ ????????HashSet<int> hs = new HashSet<int>(); ????????for (int i = 0; i < arr1.Length; i++)? ????????????hs.Add(arr1[i]); ????????for (int i = 0; i < arr2.Length; i++)? ????????????if (hs.Contains(arr2[i])) ????????????Console.Write(arr2[i] + " "); ????} ????// Driver Code ????static void Main()? ????{ ????????int []arr1 = {7, 1, 5, 2, 3, 6}; ????????int []arr2 = {3, 8, 6, 20, 7}; ????????Console.WriteLine("Union of two arrays is : "); ????????printUnion(arr1, arr2); ????????Console.WriteLine("\nIntersection of two arrays is : "); ????????printIntersection(arr1, arr2);? ????} } // This code is contributed by mits ``` This method is contributed by **Ankur Singh**. **輸出**: ``` Union of two arrays is : [1, 2, 3, 20, 5, 6, 7, 8] Intersection of two arrays is : 3 6 7 ``` **方法 5(不使用任何預定義 Java 集合的哈希技術的種類)** 1.初始化大小為 m + n 的數組 2.在結果中填充第一個數組值 通過進行哈希處理(找到合適的位置)來排列數組 3.對第二個數組重復 4.在進行哈希處理時,如果發生沖突,則以遞歸的方式遞增位置 ## Java ```java // Java program to find union and intersection? // using similar Hashing Technique? // without using any predefined Java Collections // Time Complexity best case & avg case = O(m+n) // Worst case = O(nlogn) //package com.arrays.math; public class UnsortedIntersectionUnion { ????????// Prints intersection of arr1[0..n1-1] and ????????// arr2[0..n2-1] ????public void findPosition(int a[], int b[]) { ????????int v = (a.length + b.length); ????????int ans[] = new int[v]; ????????int zero1 = 0; ????????int zero2 = 0; ????????System.out.print("Intersection : "); ????????// Iterate first array ????????for (int i = 0; i < a.length; i++) ????????????zero1 = iterateArray(a, v, ans, i); ????????// Iterate second array ????????for (int j = 0; j < b.length; j++) ????????????zero2 = iterateArray(b, v, ans, j); ????????int zero = zero1 + zero2; ????????placeZeros(v, ans, zero); ????????printUnion(v, ans, zero); ????} ????// Prints union of arr1[0..n1-1] and arr2[0..n2-1] ????private void printUnion(int v, int[] ans, int zero) { ????????int zero1 = 0; ????????System.out.print("\nUnion : "); ????????for (int i = 0; i < v; i++) { ????????????if ((zero == 0 && ans[i] == 0) || (ans[i] == 0 && zero1 > 0)) ????????????????continue; ????????????if (ans[i] == 0) ????????????????zero1++; ????????????System.out.print(ans[i] + ","); ????????} ????} ????private void placeZeros(int v, int[] ans, int zero) { ????????if (zero == 2) { ????????????System.out.println("0"); ????????????int d[] = { 0 }; ????????????placeValue(d, ans, 0, 0, v); ????????} ????????if (zero == 1) { ????????????int d[] = { 0 }; ????????????placeValue(d, ans, 0, 0, v); ????????} ????} ????// Function to itreate array ????private int iterateArray(int[] a, int v, int[] ans, int i) { ????????if (a[i] != 0) { ????????????int p = a[i] % v; ????????????placeValue(a, ans, i, p, v); ????????} else ????????????return 1; ????????return 0; ????} ????private void placeValue(int[] a, int[] ans, int i, int p, int v) { ????????p = p % v; ????????if (ans[p] == 0) ????????????ans[p] = a[i]; ????????else { ????????????if (ans[p] == a[i]) ????????????????System.out.print(a[i] + ","); ????????????else { ????????????????//Hashing collision happened increment position and do recursive call ????????????????p = p + 1; ????????????????placeValue(a, ans, i, p, v); ????????????} ????????} ????} ????public static void main(String args[]) { ????????int a[] = { 7, 1, 5, 2, 3, 6 }; ????????int b[] = { 3, 8, 6, 20, 7 }; ????????UnsortedIntersectionUnion uiu = new UnsortedIntersectionUnion(); ????????uiu.findPosition(a, b); ????} } // This code is contributed by Mohanakrishnan S. ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看