9.6、9作业

哈希表的基本知识:哈希表又称散列表,是除顺序存储结构、链式存储结构和索引表存储结构之外的又一种存储结构;哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,一般哈希表都是用来快速判断一个元素是否出现集合里。

 哈希冲突:哈希冲突是指两个不同的键通过哈希函数映射到同一个位置的情况。这通常发生在哈希表的大小有限,而数据量较大时。哈希冲突是不可避免的,但可以通过设计良好的哈希函数和使用合适的冲突解决策略来最小化。

 

 哈希碰撞:哈希碰撞是哈希冲突的另一种说法,它描述的是两个或多个不同的键值对在哈希表中被映射到同一个索引位置。碰撞会导致数据覆盖或需要额外的存储结构来处理冲突。

哈希冲突的原因通常包括:(1)有限的哈希表大小:哈希表的大小(或“桶”的数量)是有限的,而数据集可能非常大。(2)不理想的哈希函数:如果哈希函数不能均匀地分布数据,某些键可能会更频繁地映射到相同的位置。

为了解决或减少哈希冲突,可以采用以下几种策略:

 

(1). 链地址法: - 在每个哈希表的槽位上使用链表来存储具有相同哈希值的所有元素。

   - 当发生冲突时,新元素被添加到链表的末尾。

 

(2). 开放寻址法: - 这种方法不使用链表,而是在哈希表内部寻找下一个空闲位置来存储元素。

   - 常用的探测序列包括线性探测、二次探测和双重散列。

 

为了减少哈希碰撞,可以采用以下策略:拉链法:把具有相同哈希地址的记录放在同一个单链表中,称为同义词链表。若有m个哈希地址,则有m个单链表,并用数组来存放各个链表的头指针,凡是哈希地址相同的记录都被以结点方式插入到对应的头结点的单链表中。

 

1.LeetCode 242

ed2e57bbb0fe4ee285c920234341faa0.jpg

 2.LeetCode 350

e0d5b4e2b9fb4bfc9cb3dda5eeefe8f5.jpg

 3.LeetCode 349

026c5cbc535840bc80543853c5e856b9.jpg

 4.LeetCode 454

1ef5d3d0b504403a948fb69492ac3a5a.jpg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值