欢迎光临散文网 会员登陆 & 注册

Leetcode 哈希表--基础知识【代码随想录Part3】

2023-07-17 11:00 作者:Poyo_a  | 我要投稿

首先,我们来下一个定义:哈希表是根据关键码的值直接进行访问的数据结构

哈希表的定义:

一看到这个这个定义是不是有点懵逼

什么关键码的值,还直接访问。什么坤坤问题》

这里举了一个例子:【 数组】 就是一张哈希表。

那么我们就来对应一下哈希表的定义:

        关键码的值就是数组下标

      数组可以直接访问

那么哈希表能解决什么问题捏? 由于关键值来索引,我们可以快速判断一个元素是否出现集合里面。

举个例子: 要在学校里面找到我的名字,一水的人名存在哈希表里面。我们通过关键码(学号)找到俺。 但是要怎么装学生进哈希表里面捏?

   我们引入:【哈希函数】就是把学生名 和哈希表的关键码依次对应上,然后通过关键码找到学生名

我们说到数组就是hash table但是,总有一个名字不小心用到同一个学号的时候。这个时候就是遇到了哈希碰撞

遇到哈希碰撞,我们用拉链法线性探测法

拉链法:

啥叫拉链啊? 字面意思:拉一条链子把冲突的连起来。

数据规模是dataSize, 哈希表的大小为tableSize

如图所示就是拉链法,需要注意的是:需要选择合适的hash表大小

常见的三种哈希结构

当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。

  • 数组

  • set (集合)

  • map(映射



Leetcode 哈希表--基础知识【代码随想录Part3】的评论 (共 条)

分享到微博请遵守国家法律