精选文章 - 算法学习第04天|Algorithm Picks

📚 今日算法学习精选

1. 哈希表(Hash Table)

第四天我们学习”查找之王”——哈希表。它是面试中高频考察的数据结构,也是工程中被使用最多的数据结构之一。

哈希表的核心思想是用哈希函数(Hash Function) 将键(Key)映射到数组下标,实现 $O(1)$ 平均查找/插入/删除。说起来简单,但三个问题必须掌握:

  • 哈希碰撞(Hash Collision):两个不同的键算出了相同的下标。解决方案:链地址法(Chaining,用链表存冲突元素)和开放地址法(Open Addressing,探测下一个空位)
  • 扩容(Resizing):负载因子(Load Factor)过大时触发扩容,通常翻倍重建
  • 哈希攻击(Hash Flooding):恶意构造大量碰撞拖慢哈希表,防护手段是引入随机种子

2. 推荐资源

  • Java HashMap源码解读(JDK 8+)— 红黑树+链表的组合是工程经典实现
  • 为什么常数时间 $O(1)$ 只是个近似https://stackoverflow.com 搜索”HashMap amortized O(1)”
  • 力扣题型: 两数之和(Two Sum)、哈希集合(Hash Set)查重,都是入门必备

3. 核心理解

不要背”哈希表就是 $O(1)$”,要理解均摊复杂度(Amortized Complexity) 和最坏情况(Worst Case)的区别。扩容那一刻是 $O(n)$,但均摊到每次操作仍是 $O(1)$。理解了这个,才算真正理解哈希表。


每天一个新知识点,算法大厦越垒越高!