When working with arrays, one common problem in Data Structures and Algorithms (DSA) is to find the intersection — i.e., elements that appear in both arrays.
For example, if you have two lists of numbers, you might want to find out which numbers are common to both. This is a common question in coding interviews, and it helps you strengthen your logic-building skills.
💡 What Is the Intersection of Two Arrays?
The intersection of two arrays means the set of elements that appear in both arrays.
Example
Array A = [1, 2, 3, 4, 5]
Array B = [3, 4, 5, 6, 7]
✅ Intersection = [3, 4, 5]
These numbers are present in both arrays A and B.
⚙️ Approach 1. Brute Force (Simple but Less Efficient)
🧠 Logic
For each element in array A, check whether it exists in array B.
If yes, add it to the intersection list.
⏱️ Time Complexity: O(n²)
💾 Space Complexity: O(1)
💻 C++ Code Example
#include <iostream>using namespace std;
int main() {
int A[] = {1, 2, 3, 4, 5};
int B[] = {3, 4, 5, 6, 7};
int n = 5, m = 5;
cout << "Intersection: ";
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
if(A[i] == B[j]) {
cout << A[i] << " ";
break;
}
}
}
return 0;
}
✅ Output
Intersection: 3 4 5⚡ Approach 2. Using Hashing (Efficient and Common)
🧠 Logic
Store all elements of the first array in a hash set.
Traverse the second array, and check if an element exists in the set.
If yes, add it to the intersection.
⏱️ Time Complexity: O(n + m)
💾 Space Complexity: O(n)
💻 C++ Code Example
#include <iostream>#include <unordered_set>using namespace std;
int main() {
int A[] = {1, 2, 3, 4, 5};
int B[] = {3, 4, 5, 6, 7};
int n = 5, m = 5;
unordered_set<int> s(A, A + n);
cout << "Intersection: ";
for (int i = 0; i < m; i++) {
if (s.find(B[i]) != s.end()) {
cout << B[i] << " ";
s.erase(B[i]); // to avoid duplicates
}
}
return 0;
}
✅ Output
Intersection: 3 4 5🌟 Why Use Hashing?
Hashing provides O(1) average lookup time, making it much faster than the brute-force method, especially for large datasets.
Join the conversation! Your thoughts help the community grow.