样例
nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].
public class Solution {
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
public int[] intersection(int[] nums1, int[] nums2) {
// Write your code here
if(nums1.length==0||nums2.length==0||nums1==null||nums2==null){
return new int[0];
}
//对两个数组排序
Arrays.sort(nums1);
Arrays.sort(nums2);
//收集不重复的数据
HashSet<Integer>set=new HashSet<>();
int Apoint=0;//nums1左指针
int Bpoint=0;//nums2左指针
//如果两个数组都有值
while(Apoint<nums1.length&&Bpoint<nums2.length){
if(nums1[Apoint]<nums2[Bpoint]){
Apoint++;
}else if(nums1[Apoint]>nums2[Bpoint]){
Bpoint++;
}else{
set.add(nums1[Apoint]);
Apoint++;
Bpoint++;
}
}
int []nums=new int[set.size()];
int i=0;
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
nums[i++]=it.next();
}
return nums;
}
}