LeetCode349.两个数组的交集

349.两个数组的交集

LeetCode349.两个数组的交集_第1张图片

哈希Set

题目中说明:输出结果中的每个元素一定是唯一的,也就是说输出的结果是去重的,并且可以不用考虑顺序

这时候我们考虑使用哈希Set

Set集合的特点是什么?

将元素加入Set集合中,Set集合会帮助我们进行去重,如此一来,我们可以先将nums1数组的元素加入到set集合中,然后再遍历nums2数组,同时开辟一个新的结果Set集合result,对加入了nums1数组元素的集合中的元素进行判断,如果和nums2[i]相等,则将nums2[i]中的元素加入到结果Set集合result中

同时,这道题要求返回的是一个数组类型的集合

所以我们最后还需要将result集合转换为数组,然后输出,转换方式有两种,一种是stream流的形式,一种是新开辟一个数组,然后依次遍历集合,将集合元素放入数组中,在这里我选择第二种

    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> hashSet = new HashSet();
        Set<Integer> result = new HashSet();
        for(int i=0;i<nums1.length;i++){
            hashSet.add(nums1[i]);
        }
        for(int i=0;i<nums2.length;i++){
            if(hashSet.contains(nums2[i])){
                result.add(nums2[i]);
            }
        }
        int[] arr = new int[result.size()];
        int j = 0;
        for(int i:result){
            arr[j++] = i;
        }
        return arr;
    }

你可能感兴趣的:(算法实战,算法,java,力扣,数据结构,哈希算法,leetcode)