1. Brute Force — Nested Search with Visited Array
Intuition
For each element in nums1, scan nums2 to find an unvisited match. Mark matched elements in nums2 as visited to prevent reusing them.
Algorithm
- Create a boolean array
visitedof sizenums2.lengthinitialized tofalse. - Initialize an empty list
result. - For each element
xinnums1: - Loop through
jfrom0tonums2.length - 1: - If
!visited[j]andnums2[j] == x: - Mark
visited[j] = true. - Append
xtoresult. - Break out of inner loop.
- Return
result.
Match and Mark Visited (O(M*N) Time)
2 of 2 questions left todayValue 1 is not in nums2
Hash map state
Execution stateValue 1 is not in nums2.
#include <iostream>#include <vector>using namespace std; // Brute Force: Scan with visited boolean arrayvector<int> intersect(vector<int>& nums1, vector<int>& nums2) { vector<int> result; vector<bool> visited(nums2.size(), false); for (int x : nums1) { for (size_t j = 0; j < nums2.size(); j++) { if (!visited[j] && nums2[j] == x) { visited[j] = true; result.push_back(x); break; // Move to next element in nums1 } } } return result;} int main() { vector<int> nums1 = {1, 2, 2, 1}; vector<int> nums2 = {2, 2}; vector<int> res = intersect(nums1, nums2); cout << "Output: ["; for (size_t i = 0; i < res.size(); i++) { cout << res[i] << (i + 1 < res.size() ? ", " : ""); } cout << "]" << endl; return 0;}Time & Space Complexity
- Time complexity:
O(N^2)— Time complexity for Approach 1: Brute Force — Nested Search with Visited Array. - Space complexity:
O(1)— Space complexity for Approach 1: Brute Force — Nested Search with Visited Array.
Why Brute Force Doesn't Scale:
For N = 105, quadratic O(N2) approaches require ~1010 operations, exceeding the standard 1-second CPU budget.
The optimal approach processes N elements in a single or logarithmic pass, completing in under 10ms with minimal memory footprint.