【算法入门】哈希表

简介: 哈希表

17c98850bc1c134a9ea9f2d37b04e63.png

前言

哈希表这个名词,对于科班生来说应该都很熟悉,但对于一些没有系统学过计算机数据结构的同学,可能就有点陌生了,但是不要怕,实际上大部分同学在开发过程中都会有相关的应用,例如通过策略模式的优化if / else,或者在对循环计算的优化,都会借用到哈希表的思想,今天就和大家一起聊一聊 Hash

哈希表

简介

哈希表也叫散列表,哈希表是一种数据结构,它提供了快速的插入操作和查找操作,无论哈希表总中有多少条数据,插入和查找的时间复杂度都是为O(1) ,因为哈希表的查找速度非常快,所以在很多时候我们可以用它来优化程序

关于哈希表,我们可以拿它和我们比较熟悉的数组做对比,数组中有两个概念,索引 index (也就是下标)和对应的值,哈希表也类似,有对应的关键字(与数组元素的下标相对应,只是没有必须要是数字了) ,并且每个关键字都有其与之相对应的值,可以说大部分情况下,哈希表与数组,是可以相互转化的,数组能做的,哈希表同样也能做

优势

数组只能通过下标迅速访问,但是这个下标与数组里存的元素值没什么关系;哈希表通过散射函数建立了数组元素关键码的值与下标的关系 , 是数组的加强版

如果不需要有序遍历数据,并且可以提前预测数据量的大小,那么哈希表在速度和易用性方面是无与伦比的

缺点

哈希表是基于数组的,数组创建后难于扩展,某些哈希表被基本填满时,性能下降得非常严重

做题

217. 存在重复元素 - 力扣(LeetCode)

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false

分析

从题目中分析,只需要找到任意一个重复的数字,那么可以利用哈希表,用数字的值作为 key 去存储,如果遇到已经存在的 key,则直接返回

算法步骤

  1. 声明哈希表用来保存遍历的值
  2. 开始遍历数组
  3. 获取当前值,判断值是否已经存在,若存在,则返回结果并结束循环
  4. 储存当前值进哈希表
  5. 循环直到遍历完成
/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {
    const map = new Map()
    for (let i = 0; i < nums.length ; i ++) {
        if (map.get(nums[i])) {
            return true
        }
        map.set(nums[i], true)
    }
    return false
};
复制代码

复杂度分析

  • 时间复杂度 O(N):遍历一遍数组既可完成(本质上是通过空间换时间)
  • 空间复杂度 O(N):需要声明哈希表进行存储
相关文章
|
1月前
|
算法 Java 数据库
数据结构与算法学习十五:哈希表
这篇文章详细介绍了哈希表的概念、应用实例、实现思路,并提供了使用Java实现的哈希表代码。
53 0
数据结构与算法学习十五:哈希表
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
1月前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理
|
1月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
1月前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
1月前
|
机器学习/深度学习 算法
机器学习入门:梯度下降算法(上)
机器学习入门:梯度下降算法(上)
|
3月前
|
机器学习/深度学习 人工智能 算法
AI入门必读:Java实现常见AI算法及实际应用,有两下子!
本文全面介绍了人工智能(AI)的基础知识、操作教程、算法实现及其在实际项目中的应用。首先,从AI的概念出发,解释了AI如何使机器具备学习、思考、决策和交流的能力,并列举了日常生活中的常见应用场景,如手机助手、推荐系统、自动驾驶等。接着,详细介绍了AI在提高效率、增强用户体验、促进技术创新和解决复杂问题等方面的显著作用,同时展望了AI的未来发展趋势,包括自我学习能力的提升、人机协作的增强、伦理法规的完善以及行业垂直化应用的拓展等...
180 3
AI入门必读:Java实现常见AI算法及实际应用,有两下子!
|
4月前
|
机器学习/深度学习 数据采集 人工智能
机器学习算法入门与实践
【7月更文挑战第22天】机器学习算法入门与实践是一个既充满挑战又极具吸引力的过程。通过掌握基础知识、理解常见算法、注重数据预处理和模型选择、持续学习新技术和参与实践项目,你可以逐步提高自己的机器学习技能,并在实际应用中取得优异的成绩。记住,机器学习是一个不断迭代和改进的过程,保持好奇心和耐心,你将在这个领域走得更远。
|
4月前
|
消息中间件 存储 算法
实战算法的基础入门(2)
实战算法的基础入门
|
4月前
|
算法 大数据
实战算法的基础入门(1)
实战算法的基础入门