找兩個(gè)字符串的intersection梅掠。Intersection在這里是數(shù)學(xué)上「交集」的意思圆存。
原始代碼:
用了兩個(gè)set,另外還用了很蠢的方法set轉(zhuǎn)換成int數(shù)組伴挚。靶衍。
//Approach1: 兩個(gè)hashset,第一個(gè)存儲(chǔ)nums1中的unique numbers茎芋,然后輪詢第二個(gè)數(shù)組
// 判斷第一個(gè)是否contains颅眶,然后加入一個(gè)新的HashSet,Time: O(n2)
//Approach2: 用一個(gè)超大的數(shù)組模擬map败徊。帚呼。
//以下是Approach1
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set1 = new HashSet<>();
Set<Integer> res = new HashSet<>();
for (Integer num : nums1) {
set1.add(num);
}
for (int num : nums2) {
if (set1.contains(num)) {
res.add(num);
}
}
Object[] arr = res.toArray();
int[] result = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
result[i] = (int) arr[i];
}
return result;
}
Review:
- HashSet可以直接遍歷:
for (Integer num : intersect) {
result[i++] = num;
}
- 還可以用排序然后雙指針。