IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 做哈希相关的题目,快先来了解这些 -> 正文阅读

[数据结构与算法]做哈希相关的题目,快先来了解这些

目录

哈希表:英文名(Hash Table)

简单理解哈希表:

?哈希表能解决的问题:

什么是哈希函数?

哈希碰撞:

解决办法:

拉链法:

线性探测法:

常见的三种哈希结构:

总结:

推荐题型:


哈希表:英文名(Hash Table)

国内常翻译为散列表。能看到散列表和哈希表知道描述的是同一个东西就行。

简单理解哈希表:

哈希表中的关键码就是数组的索引下标,然后通过下标直接访问数组中的元素。

?哈希表能解决的问题:

???? 一般哈希表都是用来快速判断一个元素是否出现在集合里。

例如:在一个学生名字的集合里去查一个学生的名字,如果是枚举就需要o(n)的时间复杂度,如果是哈希表我们就可以通过下标访问,时间复杂度为o(1)。

??? 而我们要做的就是初始化所有学生的名字存在哈希表里。

?? 将学生名字映射到哈希表上就涉及到了hash function?? 即哈希函数。

什么是哈希函数?

哈希函数就是,通过hashcode 把名字转化为数值,一般hashcode是通过特定的编码方式,可以将其他数据转化为不同的数值,这样就把学生的名字映射为哈希表的索引上去了。

如果通过hashcode得到的数值大于哈希表的大小,也就是大于tablesize怎么办? 我们可以通过对得到的数值做一个取模的操作,就要我们保证可学生姓名一定可以映射到哈希表上了。

那么问题来了,如果学生的数量太大而哈希表的tablesize太小怎么办,此时就算hash函数计算的再怎么均匀也避免不了会有几个名字落在通一个索引下的位置。

加下来有请哈希碰撞登

哈希碰撞:

不同的关键字通过相同的哈希函数计算得到了一个相同的位置此时就会发生哈希碰撞。

解决办法:

拉链法(开散列,哈希桶,链地址法) 和 线性探测法(闭散列,线性探测,二次探测)

拉链法:

冲突就是两个关键字 通过哈希函数落在了同一个索引下面,而拉链法就是在这个位置创建了个链表把两个所得的值练了起来,这样只需要找到同一个索引,在顺着索引往链表里找就可以找到两个所得值了。

线性探测法:

线性探测法一定要保证tablesize(数组长度)大于 datesize(链表长度)。我们需要依靠哈希表中的空位来解决碰撞问题。

例如,如果冲突位置放了小李,那么就向下找一个空位置放小王的信息,所以要求tablesize 一定要大于 datesize,要不然哈希表上就没有位置来存放冲突的数据了。

常见的三种哈希结构:

  1. 数组
  2. set(集合)
  3. map(映射)

总结:

总结一下,当遇到需要我们判断一个元素是否粗线在集合里面的时候,就需要考虑哈希法了,

但是哈希法也是牺牲了空间换区了时间,因为我们要是用额外的数组,set或者map来存放数据,才能实现快速查找。

推荐题型:

力扣上搜:

1.有效的字母异位词。
2.赎金信。)
3.字母异位词分组。

题解请看下一篇。

谢谢观看,点个赞支持一下吧!

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:58:58  更:2021-12-23 16:01:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:54:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码