哈希表之练习【2】

本文探讨了如何优化寻找两个数组交集的问题,从最初的O(n^2)时间复杂度的双重循环解法,转向使用unordered_set实现的哈希表解决方案。作者指出,unordered_set在效率和空间利用上优于数组,尤其适用于处理不重复的数据。同时,对于数值范围有限的情况,使用数组可能会更优。最后,作者反思了自己的编程实践,并计划在未来更加注意解析的写法。
摘要由CSDN通过智能技术生成

学习安排根据《代码随想录》~leetcode349

求两个数组的交集,题目简单就不贴图了。

自己能用哈希表的方法解决,但是自己用到了两次for循环,显然浪费了时间。于是看了 《随想录》里面的解析,做了以下总结:

1.暴力解法时间复杂度为O(n^2)【应该是for循环的嵌套,我的不是】;

2.题目如果限制了数值的大小,使用数组来做【如果哈希值比较少,特别分散,跨度非常大,使用数组会造成空间的浪费】

3.unordered_set的底层实现是哈希表,读写效率在set中是最高的,且不会收入 重复数据,也不会对数据排序。

4.关于遇到哈希问题都用set解决,避免数组使用错误的情况:

直接使用set,不仅占用空间比数组要大,而且速度比数组慢,set把数值映射到key上都需要进行hash计算的。

 

自己的:

 

 我用了数组存放重复元素,可能是内存占用少一点的原因,

解析用

unordered_set<int> nums_set(nums1.begin(), nums1.end());

存放数据,可能是比我用for循环来存放数据要快的原因。

虽然leetcode官网里面结果提交的评判不一定准,但可以当做参考。关于解析的写法,下次会注意。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值