【算法专题】哈希表

news2024/11/17 4:24:37

哈希表是什么?有什么用?什么时候使用?怎么用?

        哈希表是存储数据对的容器;作用在于快速查找某个元素;当我们需要频繁地查找元素时,会考虑使用哈希表;在算法题中,我们通常使用STL的容器或者用数组模拟简易的哈希表,当处理字符串中的字符或数据范围比较小时,使用数组模拟更快。

   

1. 两数之和

1. 两数之和 - 力扣(LeetCode)

        依据题意,我们需要找出数组中加起来等于目标值的两个元素的下标,最容易想到的肯定是暴力解法,先固定一个元素,然后遍历这个数之前是否存在符合条件的元素,如果没有找到,接着固定下一个元素,这样一来,我们就把所有元素都遍历了一遍,能确保不重不漏,虽然本题中暴力解法也能通过,但这个方法时间复杂度太高了,我们试着对O(N^2)的时间复杂度进行优化。

        如前面所言,我们固定一个元素后,需要遍历这个数之前的元素找到符合条件的元素,这个遍历的过程时间复杂度为O(N),如果我们有一张哈希表,那么查找的操作的时间复杂度就降到了O(1),相当于用空间换时间。于是我们只需要遍历一遍数组,当能在哈希表中找到符合条件的元素时,直接返回下标,否则将这个元素加入到哈希表中。

class Solution {
public:
    /* 暴力解法
    vector<int> twoSum(vector<int>& nums, int target) 
    {
        for(int i = 1; i <= nums.size() - 1; i++)
        {
            for(int j = 0; j < i; j++)
            {
                if(nums[j] == target - nums[i])
                {
                    return {i, j};
                }
            }
        }
        return {-1, -1};
    }*/
    vector<int> twoSum(vector<int>& nums, int target) 
    {
        unordered_map<int, int> hash;
        for(int i = 0; i < nums.size(); i++)
        {
            int x = target - nums[i];
            if(hash.count(x)) 
            {
                return {hash[x], i};                    
            }
            hash[nums[i]] = i;
        }   
        return {-1, -1}; 
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1991601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于el-table的表格点选和框选功能

开篇 本篇文章旨在实现一个基于el-table的表格点选和框选功能&#xff0c;除此之外&#xff0c;还支持多种模式的切换、自定义勾选日期等。且&#xff0c;该表格后续可能还会持续优化&#xff01; 功能介绍 表格点选和框选功能&#xff08;没有点击ctrl键的情况下&#xff09;…

AI安全新纪元:智能体驱动的网络安全新范式

近日&#xff0c;ISC.AI 2024第十二届互联网安全大会在北京盛大开幕。本次大会以"打造安全大模型&#xff0c;引领安全行业革命"为主题&#xff0c;旨在呼吁行业以大模型重塑安全体系&#xff0c;以保障数字经济的稳健发展。 在企业安全运营与策略实践论坛上&#x…

人工智能时代,数字化工厂如何改革?提升竞争力?

在人工智能时代&#xff0c;数字化工厂通过数据驱动的决策、智能制造、柔性生产、物联网整合以及人机协作&#xff0c;实现生产效率和产品质量的全面提升&#xff0c;并不断创新以保持竞争力。 --题记 在人工智能时代&#xff0c;数字化工厂的改革…

usb摄像头 按钮 静止按钮

usb摄像头 按钮 静止按钮 来分析一个UVC的摄像头的枚举信息 UVC学习&#xff1a;UVC中断端点介绍 https://www.eet-china.com/mp/a269529.html 输入命令lsusb -d 0c45:62f1 -v https://www.miaokee.com/705548.html >Video Class-Specific VS Video Input Header Descrip…

如何恢复未保存/删除的 WPS 文档文件

“如何恢复 WPS 文件&#xff1f;文件已损坏&#xff0c;似乎我之前没有保存过&#xff0c;软件退出&#xff0c;导致文件丢失。有什么方法可以恢复未保存的 WPS 文档吗&#xff1f;” WPS 办公套件是金山软件开发的一款很棒的套件。说实话&#xff0c;它更适合个人和办公室工…

GEE数据——全球固定宽带和移动(蜂窝)网络性能(网速)(2019-2024)

全球固定宽带和移动&#xff08;蜂窝&#xff09;网络性能 简介 全球固定宽带和移动&#xff08;蜂窝&#xff09;网络性能&#xff0c;分配给缩放级别 16 的网络 mercator 瓷砖&#xff08;赤道处约 610.8 米乘 610.8 米&#xff09;。 数据以 Shapefile 格式和 Apache Par…

在那曲,一场别开生面的盛会即将上演

当夏日的暖阳轻抚着那曲的广袤草原&#xff0c;一场展现高原之魂的盛会悄然临近。2024年8月8日&#xff0c;那曲市将举办一场独特的选美比赛——“最美牦牛”评选比赛&#xff0c;邀请各界人士、朋友共襄盛举。 牦牛&#xff0c;被誉为“高原之舟”&#xff0c;它们在这片古老的…

【nginx】解决k8s中部署nginx转发不会自动更新域名解析启动失败的问题

文章目录 1. 问题2.解决办法3.扩展说明3.1 DNS解析阶段划分3.2 问题说明3.2.1 先看/etc/resolv.conf说明3.2.2 针对第一个问题3.2.3 针对第二个问题 【后端】NginxluaOpenResty高性能实践 参考&#xff1a; https://blog.csdn.net/u010837612/article/details/123275026 1. 问…

【Java安全开发全流程解读】Ting-Write-Nuclei V1.0发布 【万户OA-SQL注入1Day-POC】

加微信即可加入WingBy交流群 不存在娱乐化 前言 nuclei-poc一键生成工具市面上很多也很全&#xff0c;比如burp插件生成POC projectdiscovery/nuclei-burp-plugin: Nuclei plugin for BurpSuite (github.com) GUI nuclei-plus/README_zh.md at main Yong-An-Dang/nuclei-p…

七夕情人节送什么礼物?看完这篇你就知道了

在这个充满爱意的时刻&#xff0c;送上一份精心挑选的礼物&#xff0c;不仅能表达你的爱意&#xff0c;更能加深彼此之间的情感联系。然而&#xff0c;选择一份合适的情人节礼物并非易事&#xff0c;因为每个人都有其独特的需求和喜好。如果你还在为情人节送什么礼物而纠结&…

1、.Net UI框架:Xamarin Forms - .Net宣传系列文章

Xamarin.Forms是一个跨平台移动应用开发框架&#xff0c;它允许开发者使用C#和.NET进行一次编码&#xff0c;然后在iOS、Android、macOS和Windows等多个平台上运行。Xamarin.Forms是Xamarin的一部分&#xff0c;而Xamarin是微软的.NET跨平台开发工具集&#xff0c;它提供了一套…

荟萃科技:海外调查问卷的核心在哪?

那就需要知道海外问卷调查是什么&#xff1f; 海外问卷调查是国外的企业为了收集消费者的意见反馈&#xff0c;在市场上发布付费问卷&#xff0c;从而进一步改善他们的产品或者服务。 我们就是回答这些付费问卷来赚取佣金。 核心来了&#xff0c;参与这些调查问卷需要有一定…

防近视台灯什么牌子好?刨析防近视台灯的详细效果

当代不管是学习还是工作&#xff0c;大家处于“卷”的状态&#xff0c;夜晚办公的上班族或是学生党都只多不少。普通的台灯只有最基础的照明作用&#xff0c;长时间下来对眼睛伤害大&#xff0c;严重还会产生眼部疾病。而在这一时刻防近视台灯——护眼灯的出现&#xff0c;成为…

ECCV2024,清华百度提出ReSyncer:可实现音频同步嘴唇动作视频生成。

清华&百度等联合提出了ReSyncer&#xff0c;可以实现更高稳定性和质量的口型同步&#xff0c;而且还支持创建虚拟表演者所必需的各种有趣属性&#xff0c;包括快速个性化微调、视频驱动的口型同步、说话风格的转换&#xff0c;甚至换脸。 ReSyncer的工作原理可以简单理解为…

暑假看这个,一个月英语水平突飞猛进

恭喜考研党们尘埃落定&#xff0c;静等9月1号入学。 闲暇之余&#xff0c;可以看看各个领域的书&#xff0c;看优秀老师的讲课视频&#xff0c;尝试学习一门新技能....不仅能学到很多知识&#xff0c;还能让生活更加丰富。 推荐几个适合大部分人提升能力的网站。 1、中国大学MO…

JVM知识总结(即时编译)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 即时编译 Java编译器经过解释执行&#xff0c;其执行速度必然会比…

【Linux】学习Linux,需要借助具象化的思维

指令与图形化界面 导读一、命令行与图形化界面二、命令行与图形化界面的发展历程1.2.1 打字机的起源1.2.2 肖尔斯和格利登型打字机1.2.3 鼠标的发明1.2.4 图形化界面&#xff08;GUI&#xff09;的发展 三、命令行与图形化之间的联系3.1 图形化界面的人机交互3.2 命令行界面的人…

SOLIDWORKS 机电协同设计:无缝集成,提升创新速度

在现代制造业中&#xff0c;产品的复杂性和多样性日益增加&#xff0c;这要求设计团队能够在更短的时间内交付高质量的产品。为了应对这一挑战&#xff0c;越来越多的企业开始采用机电一体化的设计方法&#xff0c;其中SOLIDWORKS成为了实现这一目标的理想工具。作为SOLIDWORKS…

趋动科技联合超聚变,让超融合彻底释放算力潜能

近日&#xff0c;趋动科技联合超聚变推出基于FusionOne HCI超融合的AI算力资源池化解决方案。该方案基于业内领先的AI算力资源池化技术&#xff0c;实现智能调度、异构算力融合管理等功能&#xff0c;让客户能够低成本获取AI算力&#xff0c;便捷使用AI算力&#xff0c;加速AI业…

Linux中的无人职守安装脚本kickstart

一、linux中的无人职守安装脚本kickstart 作用&#xff1a;自动化装系统。就是创建虚拟机&#xff0c;建立完成以后&#xff0c;不需要再进入配置root等&#xff0c;直接就可以自动安装&#xff0c;快速装机。 1.1 提前准备 准备一台红帽linux7系统 linux7 下载图形化界面 […