Finding if Arrays are disjoint or not using C++
Arrays are Disjoint or not in C++
Here, in this page we will discuss the program to check whether the two arrays are disjoint or not in C++ programming language. Arrays are disjoint if the don’t contain any common value.
Here, we will discuss the following methods to check whether the given integer arrays are disjoint or not
- Method 1 : Using Naive approach.
- Method 2 : Using sorting and hashing
- Method 3 : Using Set
Method 1 :
- Run a loop from index 0 to n
- Run a nested loop from 0 to m
- Check if (arr1[i]==arr2[j]) return 0.
- Otherwise, return 1.
Time and Space Complexity :
- Time Complexity : O(n2)
- Space Complexity : O(1)
Method 1 : Code in C++
#include<bits/stdc++.h> using namespace std; int disjoint(int arr1[], int arr2[], int n, int m){ for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(arr1[i]==arr2[j]){ return 0; } } } return 1; } int main(){ int arr1[] = {10, 20, 30, 67}; int arr2[] = {20, 90, 80, 77, 23}; int n = sizeof(arr1)/sizeof(arr1[0]); int m = sizeof(arr2)/sizeof(arr2[0]); if(disjoint(arr1, arr2, n, m)) cout<<"Yes"; else cout<<"No"; }
Output :
No
Method 2 :
In this method first sort both the given integer arrays, then using the merge process we compare the elements in both arrays.
Method 2 : Code in C++
#include<bits/stdc++.h> using namespace std; int disjoint(int arr1[], int arr2[], int n, int m){ sort(arr1, arr1+n); sort(arr2, arr2+m); // Check for same elements using merge like process int i = 0, j = 0; while (i < m && j < n) { if (arr1[i] < arr2[j]) i++; else if (arr2[j] < arr1[i]) j++; else /* if set1[i] == set2[j] */ return 0; } return 1; } int main(){ int arr1[] = {10, 20, 30, 67}; int arr2[] = {20, 90, 80, 77, 23}; int n = sizeof(arr1)/sizeof(arr1[0]); int m = sizeof(arr2)/sizeof(arr2[0]); if(disjoint(arr1, arr2, n, m)) cout<<"Yes"; else cout<<"No"; }
Output :
No
Method 3 :
In this method we use the concept of set.
- Iterate through the first array and store every element in the set.
- Iterate through the second array and check if any element is present in the set.
- If present, then returns false, else ignore the element.
- If all elements of the second array are not present in the set, return true.
Method 3 : Code in C++
#include<bits/stdc++.h> using namespace std; int disjoint(int arr1[], int arr2[], int n, int m){ set st; // Traverse the first set and store its elements in hash for (int i = 0; i < n; i++) st.insert(arr1[i]); // Traverse the second set and check if any element of it // is already in hash or not. for (int i = 0; i < m; i++) if (st.find(arr2[i]) != st.end()) return 0; return 1; } int main(){ int arr1[] = {10, 20, 30, 67}; int arr2[] = {20, 90, 80, 77, 23}; int n = sizeof(arr1)/sizeof(arr1[0]); int m = sizeof(arr2)/sizeof(arr2[0]); if(disjoint(arr1, arr2, n, m)) cout<<"Yes"; else cout<<"No"; }
Output :
No
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Login/Signup to comment