Intersection of Two Arrays
Question
Given two arrays, write a function to compute their intersection.
Each element in the result must be unique. The result can be in any order.
Example Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].
Analysis
非常直观的解法就是利用HashMap,循环nums1[]一遍,记录下nums1[]中出现的数字,再对nums2[]做循环,如果在HashMap中出现过,则记录到最后的结果中。
此外也可以用先sort的方法,通过merge来保证结果unique。
Solution
// HashMap Approach
public class Solution {
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
public int[] intersection(int[] nums1, int[] nums2) {
HashMap<Integer, Boolean> map1 = new HashMap<Integer, Boolean>();
HashMap<Integer, Boolean> intersectMap = new HashMap<Integer, Boolean>();
for (int i = 0; i < nums1.length; i++) {
if (!map1.containsKey(nums1[i])) {
map1.put(nums1[i], true);
}
}
for (int j = 0; j < nums2.length; j++) {
if (map1.containsKey(nums2[j]) && !intersectMap.containsKey(nums2[j])) {
intersectMap.put(nums2[j], true);
}
}
int[] result = new int[intersectMap.size()];
int i = 0;
for (Integer e : intersectMap.keySet()) {
result[i] = e;
i++;
}
return result;
}
}Last updated
Was this helpful?