LeetCode链接
集合法
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> s1 = new HashSet<>();
Set<Integer> s2 = new HashSet<>();
for(int i: nums1){ // 存入 nums1 中所有不重复的元素
s1.add(i);
}
for(int i: nums2){ // 存入 nums2 中所有不重复的元素
s2.add(i);
}
Set<Integer> s3 = new HashSet<>();
for(int i: s1){
// 将两个集合中都存在的元素加入 s3
if(s2.contains(i)) s3.add(i);
}
int[] res = new int[s3.size()];
int index = 0;
for(int i: s3){
res[index] = i;
index++;
}
return res;
}
}
参考了题解
- 时间复杂度:O(m+n)
- 空间复杂度:O(m+n)
集合法 II
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<>();
List<Integer> list = new ArrayList<>();
for(int i: nums1){
set.add(i);
}
for(int i: nums2){
if(set.contains(i)){
list.add(i);
set.remove(i);
}
}
int[] res = new int[list.size()];
int j = 0;
for(int i: list){
res[j] = i;
j++;
}
return res;
}
}
参考了题解,这个写法薛微快一点
- 时间复杂度:O(m+n)
- 空间复杂度:O(m+n)