跳转至

哈希表

约 385 个字 预计阅读时间 2 分钟

什么算法题会用到哈希表?

  1. “找有没有” / “找配对”(你刚做的两数之和就是典型) 题目问:是否存在两个数/两个元素能满足某个条件?

思路:遍历时,把“我缺的那个数”记在哈希表里。之后遇到新数,直接查表看看我缺不缺它。

类似题:三数之和(部分去重用)、四数相加 II、查找共用字符。

  1. “数数” / “统计出现次数” 题目问:每个元素出现了几次? 或者 找出出现次数最多的/唯一不重复的。

思路:用哈希表记录每个东西出现的次数(Key 是元素,Value 是次数)。

类似题:有效的字母异位词(统计字母次数)、多数元素(找超过一半的)、字符串中的第一个唯一字符。

  1. “去重” / “是否重复” 题目问:有没有重复的数字/字符? 或者 去掉重复项。

思路:用哈希表(或者 Python 的集合 set)记录已经见过的元素,如果再次出现就说明重复了。

类似题:存在重复元素、环形链表(判断链表有没有环,用集合存节点)。

  1. “记忆化” / “缓存中间结果” 题目问:计算过程中有大量重复计算,要求优化速度。

思路:把算过的结果存进哈希表,下次遇到同样的输入,直接拿结果,不用再算一遍。

类似题:斐波那契数列(递归优化)、爬楼梯(带记忆的递归)。