第一种:暴力求解
判断交集,然后用set集合去重
public int[] intersection(int[] nums1, int[] nums2) {
int[] nums3 = nums1.length > nums2.length ? nums1 : nums2;
boolean[] flag = new boolean[nums3.length];
if(nums3==nums1) {
for (int i = 0; i < nums2.length; i++) {
for (int j = 0; j < nums3.length; j++) {
if(nums2[i]==nums3[j]&&!flag[j]) {
flag[j] = true;
break;
}
}
}
}else {
for (int i = 0; i < nums1.length; i++) {
for (int j = 0; j < nums3.length; j++) {
if(nums1[i]==nums3[j]&&!flag[j]) {
flag[j] = true;
break;
}
}
}
}
Set<Integer> set = new HashSet<>();
for (int i = 0; i < flag.length; i++) {
if(flag[i]) set.add(nums3[i]);
}
int[] arr = new int[set.size()];
int index = 0;
for (Integer integer : set) {
arr[index] =integer;
index++;
}
Arrays.sort(arr);
return arr;
}
第二种:
两个set求交集
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> s1 = new HashSet<>();
Set<Integer> s2 = new HashSet<>();
for(int num : nums1){
s1.add(num);
}
for(int num : nums2){
s2.add(num);
}
s1.retainAll(s2); // 2个set交集
int[] res = new int[s1.size()];
int k = 0;
for(int num : s1){
res[k++] = num;
}
return res;
}