Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].
Note:
Each element in the result must be unique.
The result can be in any order.
Subscribe to see which companies asked this question
public class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
HashSet<Integer> res = new HashSet();
int p1 = 0;
int p2 = 0;
int len_nums1 = nums1.length;
int len_nums2 = nums2.length;
while (p1 < len_nums1 && p2 < len_nums2) {
if (nums1[p1] < nums2[p2]) {
p1++;
} else if (nums2[p2] < nums1[p1]) {
p2++;
} else {
res.add(nums1[p1]);
p1++;
p2++;
}
}
int[] result = new int[res.size()];
int i = 0;
for (int x : res) {
result[i++] = x;
}
return result;
}
}