(该篇基本等价于up主视频:哈希表与up主视频:集合的学习笔记记录)
基本概念
- key-value对,key通过哈希函数映射为哈希值(内存地址),存储对应value
- 同一个key一定会有相同的哈希值,但同一个哈希值不一定对应同一个key,对应多个key时说明发生了哈希冲突,这种情况可以再加链表存储来解决
- 基本操作及其时间复杂度
- 访问(通过索引获取):-(哈希表没有顺序)
- 搜索(通过元素获取):O(1),冲突时O(K),K为冲突数
- 插入:O(1),冲突时O(K),K为冲突数
- 删除:O(1),冲突时O(K),K为冲突数
(访问是指根据索引查询,搜索是指根据指根据值查询)- 优点
- 用key查询快
- 缺点:
- 无序,存储空间使用不充分(待补充)
- 应用场景:
- 元素独立、查找性能要求高
- 优点
- 集合(局限于Hashset)可看成一组key
基本操作python实现
dict
#创建
hash_set=dict()
#添加1-1
hash_set[1]=1
#删除key=1的key-value
del hash_set[1]
#修改1-1为1-2
hash_set[1]=2
#搜索key=1的值
print(hash_set[1])
#检查key=1是否存在
1 in hash_set.keys()
#长度
len(hash_set)
#遍历
for key,value in hash_set.items():
print(key,value)
set
#创建
hash_set=set()
#添加1
hash_set.add(1)
#删除1
hash_set.remove(1)
#检查1是否存在
1 in hash_set
#长度
len(hash_set)
#遍历
for key in hash_set:
print(key)
题目
熟悉数据结构
217. 存在重复元素
389. 找不同
496. 下一个更大元素 I
熟悉数据结构+算法
这里例举一般遇到这种数据结构的题都有哪些解法,建议先看算法解题套路相关文章
(待补充)