目 录CONTENT

文章目录

今天面试遇到一道面试题求两个list的交集

小张的探险日记
2021-10-14 / 0 评论 / 0 点赞 / 480 阅读 / 655 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-10-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

数据结构是自己的薄弱处,这次面试也体现出来了,好在面试官没有深入讨论,当时给出的方案,两层循环,循环对比,性能消耗太大。回来,特意查询了相关文档
学习了:

使用 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;
    }
}

0

评论区