两个数组的交集

题目:

方法一:哈希,常人都可以想到直接用哈希看是否包含另一个数组即可:这里记得去重:


for(int i = 0; i < nums1.size(); i++) hash.put(nums1.get(i),hash.getOrDefault(nums1.get(i),0)+1);
// int n = Math.min(nums1.size(),nums2.size());
for(int i = 0; i < nums2.size(); i++) {
if(hash.containsKey(nums2.get(i))){
ret.add(nums2.get(i));
}
}
Set<Integer> set = new HashSet<>();
for(Integer x : ret){
set.add(x);
}
ret.clear();
ret.addAll(set);
return ret;
}
}

方法二:

自己用数组模拟boolean类型的哈希表;

这里注意我们可以在,判断时去重,把放入哈希表的元素要删除(置为false)

 

代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

robin_suli

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值