赞
踩
哈希表 是一种 使用 哈希函数 组织数据,以支持 快速插入和搜索 的 数据结构
有两种不同类型的哈希表:哈希集合和哈希映射
通过选择合适的哈希函数,哈希表可以在插入和搜索方面实现出色的性能
阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/x6sast/
哈希表的关键思想 是 使用 哈希函数 将 键 映射到 存储桶。更确切地说
当插入一个新的键时,哈希函数 将决定 该键 应该分配到 哪个桶中,并将该键存储在相应的桶中
当想要搜索一个键时,哈希表 将使用 相同的哈希函数 来查找 对应的桶,并只在特定的桶中进行搜索
在设计哈希表时,应该注意两个基本因素,一个是哈希函数、一个是键冲突
冲突解决算法应该解决以下几个问题:
键冲突一般与三种办法:线性试探法、链地址法(就是数组 + 链表中的链表)、再哈希法、公共溢出区法
通常,如果 N(一个桶中键的最大数) 是常数且很小,可以简单地使用一个数组将键存储在同一个桶中。如果 N 是可变的或很大,可能需要使用高度平衡的二叉树来代替
阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/xht3is/
https://leetcode-cn.com/leetbook/read/hash-table/xh8uld/
哈希集是集合的实现之一,它是一种 存储 不重复值 的 数据结构
插入新值 并 检查 值 是否在哈希集中 是 简单有效的,通常使用 哈希集 来检查 该值是否已经出现过
阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/xhge27/
https://leetcode-cn.com/leetbook/read/hash-table/xhzxa5/
哈希映射 是用于 存储 (key, value) 键值对 的 一种实现
使用哈希映射的第一个场景是,需要更多的信息,而不仅仅是键。然后 通过 哈希映射 建立 密钥 与 信息之间 的 映射关系
在某些情况下,需要更多信息,不仅要返回更多信息,还要帮助做出决策,当遇到重复的键时,将立即返回相应的信息。但有时,可能想先检查键的值是否可以接受
另一个常见的场景是按键聚合所有信息。也可以使用哈希映射来实现这一目标,解决此类问题的关键是 在遇到 现有键时 确定策略
除此之外,根据值类别的不同,常用的构造方式还有以下几种:
因此,当遇到某个问题可使用哈希表解决时,可以从以上几种构造方法中进行筛选
阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/xhy35e/
https://leetcode-cn.com/leetbook/read/hash-table/xhcuhg/
https://leetcode-cn.com/leetbook/read/hash-table-plus/x7exjr/
设计 关键是在 原始信息 和 哈希映射 使用的 实际键之间 建立映射关系
设计键时,需要保证:
此过程类似于设计哈希函数,但这是一个本质区别。哈希函数满足第一个规则但可能不满足第二个规则。但是映射函数应该满足它们
阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/xxez6m/
https://leetcode-cn.com/leetbook/read/hash-table/xxavl2/,这里有设计键的建议!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。