| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 利用哈希来解决问题 -> 正文阅读 |
|
[数据结构与算法]利用哈希来解决问题 |
在力扣题解中,我们经常能够看到哈希的身影。今天,让我们一起来探寻哈希的算法思路吧。 目录 一.原理通俗来说,哈希就是开辟一串空间,给他们分别定上不同的标记,然后把需解决的数据按对应标记放入指定的空间中。只需要检索空间内有无数据,就能依据空间标记来使用对应的数据。 比如有一串数字:3 5 1 6?0 4?2 7 1 ?3 8 8?1?0 5 最大为8,最小为0,我们可以开辟9个空间,将数据中对应的数字作为下标来寻找指定空间,找到的就让空间值加一。 首先初始化空间值都是0。
? 然后将数据作为下标进行检索对应空间,检索到的空间值加一。 以 3 为例,那么就是下标为 3 的空间值加一。
依次将所有数据检索。
二.解决问题这样做出来的哈希表能够解决很多的问题。 1.排序我们通过空间的值就可以清楚排序中有无该数据,该数据有多少。 比如上图中下标为0的空间值为2,就说明数值为0的数据一共有2个。 所以,对于排序而言,我们只需要对照空间值确定数量来依次打印下标即可。 2.数据间的对照检索有些问题可能需要我们将数据互相对照检索。简单数据还好,如果一旦数据复杂或者对照起来非常麻烦,就极有可能会使问题解决起来异常艰难。这时,用哈希表来解决可能会大大降低解题难度。 这里我们用题来举例,具体思路小编已经为大家写好一篇博客:力扣题解-单词替换 ? 如果哪里不明白可随时私信小编,我会尽全力为大家解答的。 当然,这里再为大家准备一道类似的题目:30. 串联所有单词的子串 - 力扣(LeetCode) ?具体的解题思路小编会在之后的博客中更新的。 ?三.优缺点哈希表最大的优点就是直观和快速。 哈希的时间复杂度通常为O(n)。 尤其对于排序来说,O(n)的时间复杂度是非常恐怖的。因为快排也只有O(n * log^n)。 但对应的,哈希最大的缺点是空间复杂度高。这取决于数据的范围大小。 所以,哈希是一种用空间来换时间的算法。 生命太短暂,不要去做一些根本没有人想要的东西。——Ash Maurya 如有错误,敬请斧正 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 23:13:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |