class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
//1,将两个数组中相同元素放入list
List list = new ArrayList();
for(int i = 0; i < nums1.length; i++){
for ( int j = 0; j < nums2.length; j++){
if(nums1[i]==nums2[j]){
list.add(nums1[i]);
}
}
}
//2,利用set进行去重
Set<Integer> set = new HashSet<Integer>();
set.addAll(list);
//3,遍历set重装数组
int[] result = new int[set.size()];
int s = 0;
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
result[s]=iterator.next();
s++;
}
return result;
}
}
2,利用set进行去重 8ms
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
//1,对数组1进行set去重
Set<Integer> set1 = new HashSet<Integer>();
for(int i : nums1){
set1.add(i);
}
//2,定义set2存放数组2中重复的数据
Set<Integer> set2 = new HashSet<Integer>();
for(int i : nums2){
if(set1.contains(i)){
set2.add(i);
}
}
//3,将结果set放入数组中
Iterator<Integer> iterator = set2.iterator();
int s = 0;
int[] result = new int[set2.size()];
while (iterator.hasNext()){
result[s]=iterator.next();
s++;
}
return result;
}
}
3,利用map 8ms
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
//1,将数组1中的数据放入map1(元素,本数组中出现的次数)中
Map<Integer,Integer> map1 = new HashMap<>();
for(int i : nums1){
int key = i;
if(map1.containsKey(key)){
int s = map1.get(key);
s++;
map1.put(key,s);
}else{
map1.put(key,1);
}
}
//2,遍历数组2中的数据,判断map1中的key是否与数组2中的数据相等,如果相等,将数据放入Set中
Set<Integer> set = new HashSet<>();
for(int i : nums2){
if(map1.containsKey(i)){
set.add(i);
}
}
//3,将set中的数据放入结果数组中
int[] result = new int[set.size()];
int i = 0;
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
result[i]=iterator.next();
i++;
}
return result;
}
}