
题目解析:求两个集合的交集。不能有重复数字,就想到使用数据类型Set。
逻辑原理:
数组一的数据存入hashset
遍历数组二如果set中存有该数据存入arraylist中,同时从set中remove该元素,防止多个元素重复
遍历list转变为array返回数据
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<Integer>();
List<Integer> arrayList = new ArrayList<Integer>();
for(Integer num : nums1)
set.add(num);
for(Integer num : nums2){
if(set.contains(num))
arrayList.add(num);
set.remove(num);
}
int size = arrayList.size();
int[] inter = new int[size];
int count = 0;
for(Integer num : arrayList)
inter[count++]=num;
return inter;
}
}
几个关键考虑点的总结:
- 根据元素不重复的特点选择数据存储的数据结构:HashSet
- ArrayList用数组存储元素,其大小可以动态变化
- 遍历ArrayList转变为数组
网友评论