数据结构是自己的薄弱处,这次面试也体现出来了,好在面试官没有深入讨论,当时给出的方案,两层循环,循环对比,性能消耗太大。回来,特意查询了相关文档
学习了:
使用 HashSet 数据结构,首先把小的list 放入 set1,然后循环 大的list,循环对比 set1 中是否含有 大的list 的值,把含有的放入 set2,再重新包装成 数组返回。
使用 hash 结构可以 在O(1) 的时间内判断一个元素是否在集合中。
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
//思路为:把小的数组放入 hashSet,然后循环hashSet对比 大的数组中哪些数据重复,加入到
//第二个 hashSet,然后返回
if(nums1.length == 0 || nums2.length==0){
return new int[0];
}
HashSet<Integer> set1 = new HashSet();
HashSet<Integer> set2 = new HashSet();
for(int i=0;i<nums1.length;i++){
set1.add(nums1[i]);
}
for(int num : nums2){
if(set1.contains(num)){
set2.add(num);
}
}
int[] list = new int[set2.size()];
int index = 0;
for(int num : set2){
list[index++] = num;
}
return list;
}
}
评论区