刷Leetcode之哈希表(一)

哈希表初认识

在刷Leetcode的时候发现哈希表的不知道怎么去写,所以想写这一篇文章和大家交流一下,如有哪处理解错误,望大家指出,共同进步

基础知识

在使用哈希表之前我们需要对它有一个大体的认识,大话数据结构,还有侯捷老师的STL 源码剖析,书籍很好,但是在刷题的时候我还是不知道怎么去下手,直到看了Leetcode的关于哈希表学习的部分,再加上其他优秀博主写的解析,我才略知一二,希望和大家分享。

  1. 关于哈希表的基础知识介绍
    这一部分我就不过多介绍,请大家看一下文章链接
    链接: https://www.cnblogs.com/AntonioSu/p/11864333.html

  2. 话不多说,直接上硬菜
    哈希表是一种数据结构,它使用哈希函数组织数据,以支持快速插入和搜索,那么在实际做题中我们如何应用呢?
    首先是哈希集合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;

    }
};
...


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值