题目
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
说明:
输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。
小知识点
list数组的list.contains(i)
方法很方便用于删除数组中的重复数组
思路
- 我的思路简单,不过有点绕,
先把每个数组删除其中的重复元素;
然后两者对比,找出共同元素,再第三方数组输出
代码
import java.util.List;
/*
* @lc app=leetcode.cn id=349 lang=java
*
* [349] 两个数组的交集
*/
// @lc code=start
class Solution {
public int[] wu(int[] a){
List<Integer> list = new ArrayList<Integer>();
for (int i : a) {
if (!list.contains(i)) {//boolean contains(Object o):如果列表包含指定的元素,则返回 true
list.add(i);
}
}
int length = list.size();
int s[] = new int[length];
for (int i = 0; i < list.size(); i++) {
s[i] = list.get(i);
}
return s;
}
public int[] intersection(int[] nums1, int[] nums2) {
int s1[];
int s2[];
s1 = wu(nums1);
s2 = wu(nums2);
int sum[] = new int[1000];
int k = 0;
for(int i = 0;i<s1.length;i++){
for(int j = 0;j<s2.length;j++){
if(s1[i] == s2[j]){
sum[k] = s1[i];
k++;
break;
}
}
}
int ss[] = new int[k];
for(int a = 0;a<k;a++){
ss[a] = sum[a];
}
return ss;
}
}
// @lc code=end