9.9-9.10作业

f594b49fc7b447c1b855b47aa7870f29.png

d3461ce54fab40a7a1b1fd4bca420e86.png 

一.哈希表总结 

 1. 识别问题中的重复计算或查找

在解决这道“四数之和为零”的问题时,首先要识别到如果直接采用四重循环遍历所有可能的组合,时间复杂度会非常高(O(n^4))。然而,我们注意到,对于nums1和nums2中的每对(i, j),我们都在尝试找到nums3和nums4中的一对(k, l),使得四数之和为零。这里就存在大量的重复计算和查找,因为不同的(i, j)组合可能会得到相同的和。

 

2. 使用哈希表存储中间结果

哈希表的一个主要优势是能够以接近常数时间(O(1))的复杂度进行查找、插入和删除操作。在这个问题中,我们可以利用哈希表来存储nums1和nums2所有可能组合的和及其出现的次数。这样,在遍历nums3和nums4时,我们只需要计算目标值(即-(nums3[k] + nums4[l])),然后在哈希表中查找这个值是否存在,如果存在,则可以直接获取到对应的次数,而无需再次遍历nums1和nums2。

 

3. 优化空间换时间的策略

哈希表的使用实际上是一种空间换时间的策略。通过牺牲一定的存储空间(在这里是存储所有可能组合的和及其次数),我们大大减少了算法的执行时间。在处理大数据集或需要高效性能的场景时,这种策略尤其有效。

 

4. 灵活运用哈希表解决类似问题

哈希表不仅限于解决此类组合问题。在算法中,它还可以用于解决诸如字符串匹配、去重、计数等多种问题。关键在于识别问题中是否存在可以通过哈希表优化的重复计算或查找过程。

 

5. 注意哈希表的冲突和扩容

虽然哈希表在大多数情况下都能提供高效的查找性能,但也需要注意其潜在的冲突和扩容问题。冲突发生时,哈希表可能需要通过链表或其他数据结构来解决同一个哈希值下的多个元素存储问题,这可能会增加查找时间。同时,随着元素的增加,哈希表可能需要扩容以维持其性能,这也会带来一定的时间和空间开销。

 

6. 编写清晰易懂的代码

最后,当使用哈希表时,编写清晰易懂的代码也非常重要。良好的命名、注释和代码结构可以帮助他人(或未来的自己)更快地理解代码的意图和逻辑。

总之,哈希表是解决算法问题中一种非常强大的工具,通过识别问题中的重复计算和查找过程,并灵活运用哈希表来优化这些过程,可以显著提高算法的效率。

 

6c96aaeaeb41490ea444bc5c1143db58.png 

e4c80927dcf94bcf8978c4fdac7a5a3d.png 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值