🌗 349. 两个数组的交集
2022年6月9日
- algorithm
🌗 349. 两个数组的交集
难度: 🌗
问题描述
解法
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
// 思路:
// 遍历小数组,存放 set
// 遍历大数组,查看是否包含
int m = nums1.length;
int n = nums2.length;
List<Integer> res = new ArrayList<>();
HashSet<Integer> set = new HashSet<>();
if(m <= n) {
for(int i : nums1) {
set.add(i);
}
for(int j : nums2) {
if(set.contains(j)) {
res.add(j);
set.remove(j);
if(set.isEmpty()) {
return getRes(res);
}
}
}
} else {
for(int i : nums2) {
set.add(i);
}
for(int j : nums1) {
if(set.contains(j)) {
res.add(j);
set.remove(j);
if(set.isEmpty()) {
return getRes(res);
}
}
}
}
return getRes(res);
}
private int[] getRes(List<Integer> res) {
int len = res.size();
int index = 0;
int[] ans = new int[len];
for(int i : res) {
ans[index] = i;
index ++;
}
return ans;
}
}