Leetcode 哈希表--基础知识【代码随想录Part3】
首先,我们来下一个定义:哈希表是根据关键码的值而直接进行访问的数据结构。
哈希表的定义:
一看到这个这个定义是不是有点懵逼

这里举了一个例子:【 数组】 就是一张哈希表。
那么我们就来对应一下哈希表的定义:
关键码的值就是数组下标
数组可以直接访问

那么哈希表能解决什么问题捏? 由于关键值来索引,我们可以快速判断一个元素是否出现集合里面。
举个例子: 要在学校里面找到我的名字,一水的人名存在哈希表里面。我们通过关键码(学号)找到俺。 但是要怎么装学生进哈希表里面捏?
我们引入:【哈希函数】就是把学生名 和哈希表的关键码依次对应上,然后通过关键码找到学生名

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

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

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

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

常见的三种哈希结构
当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。
数组
set (集合)
map(映射