This commit is contained in:
krahets 2023-03-01 16:55:43 +08:00
parent 0e6d5185cc
commit c3846a9cd1
2 changed files with 4 additions and 6 deletions

View File

@ -10,6 +10,6 @@ comments: true
- 两个不同的 key 经过哈希函数可能得到相同的桶索引,进而发生哈希冲突,导致查询错误。
- 缓解哈希冲突的途径有两种:哈希表扩容、优化哈希表的表示方式。
- 负载因子定义为哈希表中元素数量除以桶槽数量,体现哈希冲突的严重程度,常用作哈希表扩容的触发条件。与数组扩容的原理类似,哈希表扩容操作开销也很大。
- 链式地址考虑将单个元素转化成一个链表,将所有冲突元素都存储在一个链表中,从而解决哈希冲突。而为了提升查询效率,可以把链表转化为 AVL 树或红黑树,
- 链式地址考虑将单个元素转化成一个链表,将所有冲突元素都存储在一个链表中,从而解决哈希冲突。链表过长会导致查询效率变低,可以通过把链表转化为 AVL 树或红黑树来解决。
- 开放寻址通过多次探测来解决哈希冲突。线性探测使用固定步长,缺点是不能删除元素且容易产生聚集。多次哈希使用多个哈希函数进行探测,相对线性探测不容易产生聚集,代价是多个哈希函数增加了计算量。
- 在工业界中Java 的 HashMap 采用链式地址、Python 的 Dict 采用开放寻址。

View File

@ -62,13 +62,11 @@ hide:
两眼一抹黑地刷题应该是最受欢迎的方式。刷题就如同玩“扫雷”游戏一样,基础好的同学可以顺利地将地雷逐个排掉,而基础不足的同学很可能被炸的满头是包,并在受挫中渐渐退缩。通读教材书籍也是常用方法,但对于面向求职的同学来说,毕业季、投递简历、应付笔面试已经占用大部分精力,厚重的书本也因此成为巨大的挑战。
如果你也有上述烦恼,那么很幸运这本书找到了你。本书是我对于该问题给出的答案,虽然不一定正确,但至少代表一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但可以带领你探索出算法知识的“地图”,让你了解不同“地雷”的形状大小和分布位置,并使你掌握各种“排雷方法”
如果你也有上述烦恼,那么很幸运这本书找到了你。本书是我对于该问题给出的答案,虽然不一定正确,但至少代表一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但会引导你探索数据结构与算法的“知识地图”,带你了解不同“地雷”的形状大小和分布位置,让你掌握各种“排雷方法”。有了这些本领,相信你可以更加得心应手地开展算法学习,逐步搭建起完整的知识体系
本书提供可一键运行的源代码,已被翻译至 12 种编程语言,托管在 [github.com/krahets/hello-algo](https://github.com/krahets/hello-algo) 仓库。发行版 PDF 的更新周期较长,想看最新内容的小伙伴可以前往 [www.hello-algo.com](https://www.hello-algo.com/) 网页版。
本书提供可一键运行的源代码,已被翻译至十余种编程语言,托管在 [github.com/krahets/hello-algo](https://github.com/krahets/hello-algo) 仓库。发行版 PDF 的更新周期较长,想看最新内容的小伙伴可以前往 [www.hello-algo.com](https://www.hello-algo.com/) 网页版。
希望这本书能够帮助你把知识的“雪球”滚起来,让你做到心中有数、不慌不忙。加油!
### 作者简介
<h3 align="left"> 作者简介 </h3>
靳宇栋 (Krahets)大厂高级算法工程师上海交通大学硕士。力扣LeetCode全网阅读量最高博主其 LeetBook《图解算法数据结构》已被订阅 22 万本。