Day 7 | 哈希表进阶*

文章讨论了解决LeetCode中的四数相加问题(454题)和可能用到的哈希表技巧,以及Python中的Counter在383赎金信问题中的应用。提到15和18题的三数之和,强调了处理重复元素的重要性。同时,作者提到了在四数之和中避免重复遍历的方法,但表示链表数组去重是一个挑战。
摘要由CSDN通过智能技术生成

Leetcode 454 四数相加

这道题是哈希表的经典题目,这里只是要输出满足结果的数量,并没有很高的去重的要求。

题目的描述可以说的对哈希表量身定做的。

解题思路很巧妙,先判断A和B数组之和,下标是(n1 + n2)的哈希值进行计数

之后用 count 进行计数后,用 -(n3 + n4)进行遍历,统计最后的结果

需要注意的是,hashmap采用的是链地址法,数组的每个索引处都是一个链表结构,所以这里不是hashmap[n1+n2] in hashmap 而是n1+n2

Leetcode 383 赎金信

感觉这题同哈希表的方法不是很容易,看到了一个比较好的方法

Python3 中的 Counter() 函数,首先需要import collections 

然后counter函数可以用来统计一个 python 列表、字符串、元组等可迭代对象中每个元素出现的次数,并返回一个字典。

最后通过字典的比较就可以实现。

Leetcode 15 三数之和

没做出来



Leetcode 18 四数之和

关注了网上哈希表还有其他的方法,感觉实在是太麻烦了,这道题的难点是不重复上,所以我们在循环上,做了一点小手脚,保证不重复的遍历,虽然时间复杂度会有点高,但工作量比较简单

但是这个方法还需要解决的一个问题就是,链表数组怎么去重不会做

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值