Python 练习 LeetCode 哈希表
整理 LeetCode 哈希表题目的 Python 解答。保持更新
刷题顺序参考:https://www.jianshu.com/p/460edbe3dc36
题目分类 题目编号
有一些题目不是用哈希表解的,但是和其他哈希表解的题目是类似的问题,修改了一部分条件
哈希表的查找、插入及删除 217、633、349、128、202、500、290、532、205、166、466、138
哈希表与索引 1、167、599、219、220
哈希表与统计 594、350、554、609、454、18
哈希表与前缀和 560、523、525
文章目录
1. 哈希表的查找、插入及删除
1-1 哈希表用于随机链表复制 (138)
138 哈希表记录随机指针信息;拼接+拆分得到新链表
2. 哈希表与索引
和前一部分相比,哈希表存储的数据为索引值
2-1 数组的两数之和问题 (1, 167)
1 暴力枚举;哈希表。适用于无序数组
167 二分查找;双指针。适用于有序数组
2-2 查找重复元素 (219, 220)
219 哈希表 < 指针窗口
220 指针窗口 << 红黑树 < 桶排序
3. 哈希表与统计
3-1 哈希表统计 (594, 454)
594 遍历枚举 < 哈希表统计
这里在 Python 中可以用 collections.Counter() 函数高效完成哈希表统计,比字典推导式快很多
454 分组哈希
collections.Counter() 函数可以遍历多个数组
count_dict = Counter(u + v for u in nums1 for v in nums2)
collections.Counter() 函数的一些使用方法:https://leetcode.cn/problems/4sum-ii/solutions/944357/si-wei-dao-tu-zheng-li-xiang-jie-counter-nw0f/
类似题目:18 排序+双指针
这一题如果先做了三数之和再做思路会清楚一点。有时如果算法复杂度很高的话,能优化到 O(n3) 就很好了
4. 哈希表与前缀和
4-1 前缀和 + 哈希表优化 (560, 523)
560 题解思路 560 Python 题解 枚举 < 前缀和+哈希表优化
523 题解思路 523 Python 题解 前缀和+哈希表优化