我相信爱情的纯粹
![2e779a7cce0bebe5c72e8641cf4719ac.png](https://i-blog.csdnimg.cn/blog_migrate/99e8dfe6a064f542dd6ac1ccd99b35e6.png)
哈希表就是一种以 键-值(key-value)存储数据的结构,只要输入key,即可查找到其对应的值。 哈希表通过在value的存储位置和它的key之间建立一个确定的对应关系f(这个对应关系称为哈希函数),使每个key与数据结构中的一个唯一的存储位置相对应。 一般哈希表都是用来快速判断一个元素是否出现集合里。 使用哈希查找有两个步骤:
- 使用哈希函数将被查找的键转换为数组的索引。
- 在理想的情况下,不同的键会被转换为不同的索引值,但是在有些情况下需要处理多个键被哈希函数映射到同一个索引值的情况,所以哈希查找的第二个步骤处理哈希碰撞冲突。哈希碰撞冲突的方法包括拉链法和线性探测法等。
unordered_map不会根据key的大小进行排序,而map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历,内部元素自动排序。
map的底层实现是二叉平衡树(红黑树);hashmap的底层是一个hashtable;运行效率方面:unorderedmap最高,而map效率较低但提供了稳定效率和有序的序列;占用内存方面:map内存占用略低,unorderedmap内存占用略高,而且是线性成比例的。
c++中,map是红黑树,中序遍历有序;unordered_map是哈希表,属于无序存储。
Contents
-
1 两数之和(1)
2 存在重复元素(217)
3 最长和谐子序列(594)
4 最长连续序列(128)
5 两个数组的交集I(349)
6 两个数组的交集II (350)
7 四数相加 II(454)
8 快乐数(202)