题目:
吐槽:解法很多,能A掉就行了。有些快捷的思路可以从其它题目中再学。
代码:
public static int[] intersection(int[] nums1, int[] nums2) {
//1.将两个数组排序
Arrays.sort(nums1);
Arrays.sort(nums2);
int count1 = 0;
int count2 = 0;
HashSet<Integer> set = new HashSet();
//2.类似于归并排序中的归并思路,将相同的值存入set集合(set集合不会有重复的值)
while(count1<nums1.length&&count2<nums2.length){
if(nums1[count1] == nums2[count2]){
set.add(nums1[count1]);
count1++;
count2++;
}else if(nums1[count1] > nums2[count2]){
count2++;
}else{
count1++;
}
}
//3.将set里的结果传换成数组返回
int[] result = new int[set.size()];
int count = 0;
Iterator<Integer> iterator = set.iterator();
while(iterator.hasNext()){
result[count++] = iterator.next();
}
return result;
// TreeSet<Integer> set1 = new TreeSet<>();
// TreeSet<Integer> set2 = new TreeSet<>();
// for (int i = 0; i < nums1.length; i++) {
// set1.add(nums1[i]);
// }
// for (int i = 0; i < nums2.length; i++) {
// if(set1.contains(nums2[i])){
// set2.add(nums2[i]);
// }
// }
// int[] result = new int[set2.size()];
// int count = 0;
// while(!set2.isEmpty()){
// result[count++] = set2.pollFirst();
// }
// return result;
}