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. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。
相关推荐
Magic--4 分钟前
【LeetCode 27. 移除元素】C++ 范围 for 极简实现与原理解析
c++·算法·leetcode
A923A7 分钟前
【洛谷刷题 | 第九天】
算法·二分·洛谷
旖-旎8 分钟前
位运算(只出现一次的数字|||)(5)
c++·算法·leetcode·位运算
AIpanda88811 分钟前
数字员工是什么?熊猫智汇在提高销售转化率中的作用有哪些?
算法
源码之家14 分钟前
计算机毕业设计:基于Python的美食数据采集可视化系统 Django框架 Scrapy爬虫 可视化 数据分析 大数据 机器学习 食物 食品(建议收藏)✅
python·算法·机器学习·信息可视化·课程设计
简简单单做算法15 分钟前
基于Q-Learning强化学习的小车倒立摆平衡控制系统matlab性能仿真
算法·matlab·强化学习·qlearning·小车倒立摆平衡控制
Book思议-16 分钟前
【数据结构】循环与递归:C 语言实现求和与斐波那契数列的两种思路
数据结构·算法·循环与递归
Mr_Xuhhh18 分钟前
LeetCode 热题 100 刷题笔记:从数组到字符串的经典解法(续)
java·数据结构·算法
VelinX23 分钟前
【个人学习||算法】贪心算法
学习·算法·贪心算法
源码之家25 分钟前
计算机毕业设计:Python智慧交通大数据监控系统 Flask框架 可视化 百度地图 汽车 车况 数据分析 大模型 机器学习(建议收藏)✅
大数据·python·算法·机器学习·信息可视化·flask·课程设计