LeetCode Solutions
349. Intersection of Two Arrays
Time: $O(n)$ Space: $O(n)$
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> ans;
unordered_set<int> set{begin(nums1), end(nums1)};
for (const int num : nums2)
if (set.erase(num))
ans.push_back(num);
return ans;
}
};
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
List<Integer> ans = new ArrayList<>();
Set<Integer> set = Arrays.stream(nums1).boxed().collect(Collectors.toSet());
for (final int num : nums2)
if (set.remove(num))
ans.add(num);
return ans.stream().mapToInt(Integer::intValue).toArray();
}
}
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
ans = []
nums1 = set(nums1)
for num in nums2:
if num in nums1:
ans.append(num)
nums1.remove(num)
return ans