给定两个数组,写一个函数来计算它们的交集。
例子:
给定 num1= [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2]
.
提示:
- 每个在结果中的元素必定是唯一的。
- 我们可以不考虑输出结果的顺序。
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<>();
for(int n:nums1){
set.add(n);
}
int i = 0;
for(int n:nums2){
if(set.remove(n))
nums2[i++] = n;
}
return Arrays.copyOfRange(nums2,0,i);
}
}
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
int i= 0,j=0,k=0;
int n = nums1.length;
int m = nums2.length;
int[] result = new int[Math.min(n,m)];
while(i<n&&j<m){
if(nums1[i] ==nums2[j]){
result[k++]= nums1[i++];
j++;
}else if(nums1[i]>nums2[j]){
j++;
}else{
i++;
}
}
return Arrays.copyOfRange(result,0,k);
}
}