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 四数之和![](https://img-blog.csdnimg.cn/direct/9eb5bddff4fa43fe8a27269ad3f1b310.png)
关注了网上哈希表还有其他的方法,感觉实在是太麻烦了,这道题的难点是不重复上,所以我们在循环上,做了一点小手脚,保证不重复的遍历,虽然时间复杂度会有点高,但工作量比较简单
但是这个方法还需要解决的一个问题就是,链表数组怎么去重不会做