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. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。
相关推荐
pursuit_csdn几秒前
力扣周赛 501
算法·leetcode·职场和发展
努力d小白2 分钟前
leetcode70.爬楼梯
算法
AbandonForce2 分钟前
LeetCode 滑动窗口个人思路详解
算法·leetcode·职场和发展
bnmoel5 分钟前
数据结构深度剖析顺序表:结构、扩容与增删查改全解析
c语言·数据结构·算法·顺序表
Liangwei Lin5 分钟前
LeetCode 45. 跳跃游戏 II
数据结构·算法·leetcode
啦啦啦_99998 分钟前
4. 决策树剪枝
算法·决策树·剪枝
枕星而眠9 分钟前
一篇吃透 C++ 核心基础:初始化、引用、指针、内联、重载、右值引用
开发语言·数据结构·c++·后端·visual studio
鹿角片ljp11 分钟前
全局哈希去重原理与数据集实践
算法·安全·哈希算法
Paranoid-up13 分钟前
安全启动和安全固件更新(SBSFU)3:加密基础
算法·安全·哈希算法·iap·安全启动·安全升级·sbsfu
是wzoi的一名用户啊~22 分钟前
Floyd 模版 弗洛伊德算法 模版
c++·算法·动态规划·图论·floyd