
[LeetCode] 349. Intersection of Two Arrays
題目說明
給定兩個陣列 num1 和 num2 ,返回他們的交集。
輸出結果中的每個元素一定是唯一的,可以不用考慮輸出結果的順序。
範例測試資料說明
範例 1:
輸入:nums1 = [1,2,2,1],nums2 = [2,2]
輸出:[2]
範例 2:
輸入:nums1 = [4,9,5],nums2 = [9,4,9,8,4]
輸出:[9,4]
補充:[4,9] 也是可以接受的。
解法 : 使用 Set 去除相同數值
- 先走訪 num1 使用 Set 去除相同數值
- 然後走訪 num2 ,並且判斷是否有 set1 相同的數值,如果有就存入 set2
- 最後走訪 set2 ,並且將存入陣列中,輸出答案
Code 如下:
public int[] intersection(int[] nums1, int[] nums2) {
// 將 nums1 的元素放入 set1
Set<Integer> set1 = new HashSet<>();
for (int i : nums1) {
set1.add(i);
}
// 將 nums2 的元素放入 set2
Set<Integer> set2 = new HashSet<>();
for (Integer i : nums2) {
if (set1.contains(i)) {
set2.add(i);
}
}
// 將 set2 轉成陣列
int[] ans = new int[set2.size()];
int i = 0;
// 將 set2 的元素放入 ans
for (Integer num : set2) {
ans[i++] = num;
}
return ans;
}