哈希表初认识
在刷Leetcode的时候发现哈希表的不知道怎么去写,所以想写这一篇文章和大家交流一下,如有哪处理解错误,望大家指出,共同进步
基础知识
在使用哈希表之前我们需要对它有一个大体的认识,大话数据结构,还有侯捷老师的STL 源码剖析,书籍很好,但是在刷题的时候我还是不知道怎么去下手,直到看了Leetcode的关于哈希表学习的部分,再加上其他优秀博主写的解析,我才略知一二,希望和大家分享。
-
关于哈希表的基础知识介绍
这一部分我就不过多介绍,请大家看一下文章链接
链接: https://www.cnblogs.com/AntonioSu/p/11864333.html -
话不多说,直接上硬菜
哈希表是一种数据结构,它使用哈希函数组织数据,以支持快速插入和搜索,那么在实际做题中我们如何应用呢?
首先是哈希集合unordered_set***,哈希集是集合的实现之一,它是一种存储不重复值的数据结构。底层实现是hash表,故而其内的元素是无序的*。且它保存关键词key,因此unordered_set set中的Type只有一个,要与之后讲的哈希映射区分开。
接下来请看Leetcode题力扣第217题 C++代码如下
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> s; //创建一个哈希表,类型为int
for(int x:nums) //遍历nums
{
if(s.find(x)!=s.end()) //注意find()函数查找元素,如果该值在哈希表中存在,则返回的是key值对应的迭代器,如果不存在返回的是end()
{
return true;
}
s.insert(x); //插入
}
return false;
}
};
...