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. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。
相关推荐
_深海凉_1 小时前
LeetCode热题100-有效的括号
linux·算法·leetcode
被开发耽误的大厨4 小时前
1、==、equals、hashCode底层原理?重写场景?
算法·哈希算法
WolfGang0073214 小时前
代码随想录算法训练营 Day38 | 动态规划 part11
算法·动态规划
松☆5 小时前
C++ 算法竞赛题解:P13569 [CCPC 2024 重庆站] osu!mania —— 浮点数精度陷阱与 `eps` 的深度解析
开发语言·c++·算法
jr-create(•̀⌄•́)6 小时前
正则化和优化算法区别
pytorch·深度学习·神经网络·算法
li星野7 小时前
刷题:数组
数据结构·算法
tankeven7 小时前
HJ182 画展布置
c++·算法
CS_Zero9 小时前
无人机路径规划算法——EGO-planner建模总结—— EGO-planner 论文笔记(一)
论文阅读·算法·无人机
杰梵9 小时前
聚酯切片DSC热分析应用报告
人工智能·算法