哈希表的基本知识:哈希表又称散列表,是除顺序存储结构、链式存储结构和索
引表存储结构之外的又一种存储结构;哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,一般哈希表都是用来快速判断一个元素是否出现集合里。
哈希冲突:哈希冲突是指两个不同的键通过哈希函数映射到同一个位置的情况。这通常发生在哈希表的大小有限,而数据量较大时。哈希冲突是不可避免的,但可以通过设计良好的哈希函数和使用合适的冲突解决策略来最小化。
哈希碰撞:哈希碰撞是哈希冲突的另一种说法,它描述的是两个或多个不同的键值对在哈希表中被映射到同一个索引位置。碰撞会导致数据覆盖或需要额外的存储结构来处理冲突。
哈希冲突的原因通常包括:(1)有限的哈希表大小:哈希表的大小(或“桶”的数量)是有限的,而数据集可能非常大。(2)不理想的哈希函数:如果哈希函数不能均匀地分布数据,某些键可能会更频繁地映射到相同的位置。
为了解决或减少哈希冲突,可以采用以下几种策略:
(1). 链地址法: - 在每个哈希表的槽位上使用链表来存储具有相同哈希值的所有元素。
- 当发生冲突时,新元素被添加到链表的末尾。
(2). 开放寻址法: - 这种方法不使用链表,而是在哈希表内部寻找下一个空闲位置来存储元素。
- 常用的探测序列包括线性探测、二次探测和双重散列。
为了减少哈希碰撞,可以采用以下策略:拉链法:把具有相同哈希地址的记录放在同一个单链表中,称为同义词链表。若有m个哈希地址,则有m个单链表,并用数组来存放各个链表的头指针,凡是哈希地址相同的记录都被以结点方式插入到对应的头结点的单链表中。
1.有效的字母异位词
2.两个数组的交集2
3,两个数组的交集
1.快乐数
2.两数之和
3.四数相加
做题思路:这段代码定义了一个 Solution
类,其中包含一个方法 fourSumCount
,该方法用于计算两个数组中所有可能的两个数的和,然后计算这些和与另外两个数组中所有可能的两个数的和的相反数相等的组合的数量。
运用哈希表的心得:哈希表是一种非常高效的数据结构,它通过哈希函数将键映射到表中一个位置来访问记录,从而实现快速的数据插入、删除和查找操作。