#349.两个数组的交集
题目:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
难度:简单
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
代码如下:
vclass Solution {
public int[] intersection(int[] nums1, int[] nums2) {
int n1 = nums1.length;
int n2 = nums2.length;
Arrays.sort(nums1);
Arrays.sort(nums2);
int flag = 1;
int k = 0;
int [] same = new int [1000];
if(n1 < n2){
for(int i = 0; i < n1; i ++){
for(int j = 0; j < n2; j ++){
if(nums1[i] == nums2[j] && flag==1){//储存的第一个数
flag = 0;
same[k] = nums1[i];
k++;
}
if(nums1[i] == nums2[j] && flag==0){//判断与前面数是否相同
if(nums1[i] != same[k-1]){
same[k] = nums1[i];
k++;
}
}
}
}
}else{
for(int i = 0; i < n2; i ++){
for(int j = 0; j < n1; j ++){
if(nums2[i] == nums1[j] && flag==1){//储存的第一个数
flag = 0;
same[k] = nums2[i];
k++;
}
if(nums2[i] == nums1[j] && flag==0){//判断与前面数是否相同
if(nums2[i] != same[k-1]){
same[k] = nums2[i];
k++;
}
}
}
}
}
int [] res = new int [k];
for(int i = 0; i < k; i ++)
res[i] = same[i];
return res;
}
}
运行结果: