力扣笔记 ——【哈希 set集合】349. 两个数组的交集

题目直达,速速练题吧:349. 两个数组的交集

题意:给定两个数组,编写一个函数来计算它们的交集。

349. 两个数组的交集

说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。

输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序 。使用数组来做哈希的题目,是因为题目都限制了数值的大小。而且如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。set会更适用。但不能统统无脑使用set,因为不仅占用空间比数组大,而且速度要比数组慢,set把数值映射到key上都要做hash计算的。

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        //无重复的哈希
        Set<Integer> Set1 = new HashSet<>();
        Set<Integer> resSet = new HashSet<>();

        //把数组1去重添加进集合
        for (int i : nums1) {
            Set1.add(i);
        }

        //数组2筛选
        for (int i : nums2) {
            if (Set1.contains(i)) {
                resSet.add(i);
            }
        }

        //以数组输出集合里的元素
        int[] arr = new int[resSet.size()];
        int j = 0;
        for(int i : resSet){
            arr[j++] = i;
        }
        return arr;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值