给定两个数组,编写一个函数来计算它们的交集
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
- 分别对两个数组排序
- 建新数组,长度为min(nums1.length,nums2.length)。将所求元素放在新数组中(双指针),求交集长度
- 复制有效数组并返回
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
int len1 = nums1.length;
int len2 = nums2.length;
int[] ans = new int[Math.min(len1,len2)];
Arrays.sort(nums1);
Arrays.sort(nums2);
int i=0,j=0,index=0;
while(i!=len1 && j!=len2){
if(nums1[i]<nums2[j]){
i++;
}
else if(nums1[i]>nums2[j]){
j++;
}
else{
ans[index] = nums1[i];
index++;
i++;
j++;
}
}
return Arrays.copyOfRange(ans,0,index);
}
}