Hello算法6:哈希表

本文是基于k神的Hello 算法的读书笔记,请支持实体书。

https://www.hello-algo.com/chapter_paperbook/

哈希表

通过建立key与value的映射,实现高效的查找。我们向哈希表输入一个值Key,就能在O(1)的时间内得到值Value。

哈希表的增删改查,时间复杂度否是O(1)

哈希表的常用操作

python 复制代码
# 初始化哈希表
hmap: dict = {}

# 添加操作
# 在哈希表中添加键值对 (key, value)
hmap[12836] = "小哈"
hmap[15937] = "小啰"
hmap[16750] = "小算"
hmap[13276] = "小法"
hmap[10583] = "小鸭"

# 查询操作
# 向哈希表输入键 key ,得到值 value
name: str = hmap[15937]

# 删除操作
# 在哈希表中删除键值对 (key, value)
hmap.pop(10583)

哈希表的简单实现

代码略

https://www.hello-algo.com/chapter_hashing/hash_map/#612

这里实际上模拟了一个简单的hash算法,即

python 复制代码
index = hash(key) % capacity

哈希冲突

上面这个例子,key的值足够大足够多时,就会产生相同的index值,这就是哈希冲突。

一个简单的解决哈希冲突的方法是扩容,但这样效率太低,所以解决哈希冲突遵循以下两个原则:

  1. 改良哈希表数据结构,使得哈希表可以在存在哈希冲突时正常工作
  2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。
相关推荐
curry____3039 分钟前
基本算法(2025.11.21)
c++·算法
WWZZ20251 小时前
快速上手大模型:深度学习5(实践:过、欠拟合)
人工智能·深度学习·神经网络·算法·机器人·大模型·具身智能
司铭鸿1 小时前
图论中的协同寻径:如何找到最小带权子图实现双源共达?
linux·前端·数据结构·数据库·算法·图论
小年糕是糕手3 小时前
【C++】C++入门 -- 输入&输出、缺省参数
c语言·开发语言·数据结构·c++·算法·leetcode·排序算法
情怀姑娘3 小时前
面试题---------------场景+算法
java·算法·mybatis
chbmvdd3 小时前
week5题解
数据结构·c++·算法
用户12039112947263 小时前
面试官最爱问的字符串反转:7种JavaScript实现方法详解
算法·面试
vir024 小时前
小齐的技能团队(dp)
数据结构·c++·算法·图论
Star在努力4 小时前
C语言复习八(2025.11.18)
c语言·算法·排序算法
南山安4 小时前
从反转字符串看透面试官的“内心戏”:你的算法思维到底怎么样?
javascript·算法·面试