9.10作业

哈希表(Hash Table),也叫散列表,是一种通过键(Key)直接访问值(Value) 的数据结构,核心是利用哈希函数将键映射到表中的特定位置(哈希地址),实现高效的插入、查找和删除操作。
 
1. 核心组成
- 哈希函数(Hash Function):将任意长度的键(如字符串、数字)转换为固定长度的索引(哈希地址),决定值在表中的存储位置。
示例:存储学生信息(键为学号 2024001 ),哈希函数可设为 学号 % 100 ,则该学生信息存放在索引 1 的位置。
- 哈希表(Hash Table):本质是数组(或数组+链表/红黑树),用于存储键值对,数组下标即哈希函数计算出的哈希地址。
- 键值对(Key-Value Pair):哈希表的存储单元,通过Key唯一标识,Value是实际存储的数据。
 
2. 核心操作(时间复杂度)
理想情况下(无哈希冲突),所有操作均为 O(1),这是哈希表的最大优势。
- 插入(Insert):用哈希函数计算Key的哈希地址,将键值对存入该地址。
- 查找(Search):计算Key的哈希地址,直接访问该地址获取Value。
- 删除(Delete):计算Key的哈希地址,移除该地址的键值对。
 
3. 关键问题:哈希冲突
定义:不同的Key通过哈希函数计算出相同的哈希地址(如 2024001 和 2024101 ,经 %100 后均得到 1 )。
解决方法:
- 链地址法(常用):哈希表每个位置存储一个链表(或红黑树),冲突的键值对依次存入链表,查找时遍历链表匹配Key。
- 开放地址法:若地址冲突,按固定规则(如线性探测:冲突后检查下一个地址)寻找下一个空地址存储。
 
4. 应用场景
- 存储键值对数据:如Python的 dict 、Java的 HashMap 底层实现。
- 缓存系统:快速查找缓存数据(如浏览器缓存)。
- 去重操作:如统计数组中不重复元素(通过Key唯一性判断)。
- 哈希集合(HashSet):仅存Key,用于快速判断元素是否存在(本质是值为 None 的哈希表)。

242                                                                                                                                                       用长度为26的数组 cnt 统计字符串 s 中各字母出现次数(对应位置加1),再统计字符串 t 中各字母出现次数(对应位置减1),最后判断数组 cnt 所有元素是否都为0,若都为0则 s 和 t 是字母异位词。

349                                                                                                                                                  先把数组  nums1  转成集合  set1  去重,再遍历数组  nums2 ,将  nums2  中存在于  set1  的元素加入新集合  set2 ,最后把  set2  转成列表返回,这样就得到了两个数组的交集。

350                                                                                                                                                  用 Counter  统计  nums1  中各数字的出现次数,然后遍历  nums2 ,当数字在  cnt  中还有剩余次数时,将其加入结果列表,并减少该数字在  cnt  中的次数,最后返回结果列表,得到两个数组的交集。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值