【算法 - 哈希表】两数之和
这里写自定义目录标题
- 两数之和
- 题目解析
- 思路
- 解法一 :暴力枚举 依次遍历
- 解法二 :使用哈希表来做优化
- 核心逻辑
- 为什么之前的暴力枚举策略不太好用了?
- 所以,这就是 这道题选择 ==固定一个数,再与其前面的数逐一对比完后,再将其自身放入hash表中,参与匹配== 的原因
- 代码实现
两数之和
题目解析

思路
解法一 :暴力枚举 依次遍历
- 时间复杂度 O(n^2)
暴力枚举两层for()循环遍历O(n^2) - 空间复杂度 无
- 先固定其中一个数
- 依次与该数之前的数相加
而 解法二 则是,遍历完这个数以后,将其丢入hash表中。枚举下一个数时,很自然的枚举hash表中前面遍历过的数
解法二 :使用哈希表来做优化
-
时间复杂度:O(n)
由原来的 暴力枚举两层for()循环遍历O(n^2) 到 ,只需遍历一遍 固定一个数O(n),哈希表查找匹配的另一个数O(1) -
空间复杂度:O(n)
对比 暴力枚举 即可看出,哈希表是用 空间换时间
核心逻辑
为什么之前的暴力枚举策略不太好用了?
我们也能把所有的数都放入hash表中,再由前往后遍历一遍数组,再直接在hash中找匹配的数就好了,为什么还要 逐一遍历,再将遍历到的节点逐一放入hash表中 ?
这是因为会出现 “恰好 遍历到的数本身,也能满足匹配的要求” 的情况,这违反了题目所说的需求 数组中同一个元素在答案里不能重复出现

blog.csdnimg.cn/direct/4e384c8f2ebd454f910606e12c610d2c.jpeg)
因此,这种做法需要加入特判。
所以,这就是 这道题选择 固定一个数,再与其前面的数逐一对比完后,再将其自身放入hash表中,参与匹配 的原因
因此,循环遍历固定一个节点,遍历完后将该节点放入hash表中,后继续向后遍历,仅需查找前面放入hash表中的值即可(就不会出现查找hash表中选中自身的情况),这样的顺序避免了 出现了重复出现同一个数字 的情况 。也 不需要再处理什么边界情况 了。
代码实现
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) { // 数 ,下标unordered_map<int,int> hash; // <nums[i],i> // 遍历数组for(int i=0;i<nums.size();i++){int x=target-nums[i];if(hash.count(x)) return {hash[x],i}; // hash[x]中 存放的就是 x的下标hash[nums[i]]=i; // 遍历完后,将该节点放入到hash表中}// 照顾编译器return {1,-1};}
};

相关文章:
【算法 - 哈希表】两数之和
这里写自定义目录标题 两数之和题目解析思路解法一 :暴力枚举 依次遍历解法二 :使用哈希表来做优化 核心逻辑为什么之前的暴力枚举策略不太好用了?所以,这就是 这道题选择 固定一个数,再与其前面的数逐一对比完后&…...
【深度学习】图形模型基础(5):线性回归模型第一部分:认识线性回归模型
1. 回归模型定义 最简单的回归模型是具有单一预测变量的线性模型,其基本形式如下: y a b x ϵ y a bx \epsilon yabxϵ 其中, a a a 和 b b b 被称为模型的系数或更一般地,模型的参数。 ϵ \epsilon ϵ 代表误差项&#…...
2024 年第十四届 APMCM 亚太地区大学生数学建模竞赛B题超详细解题思路+数据预处理问题一代码分享
B题 洪水灾害的数据分析与预测 亚太中文赛事本次报名队伍约3000队,竞赛规模体量大致相当于2024年认证杯,1/3个妈杯,1/10个国赛。赛题难度大致相当于0.6个国赛,0.8个妈杯。该比例仅供大家参考。 本次竞赛赛题难度A:B:C3:1:4&…...
Yarn有哪些功能特点
Yarn是一个由Facebook团队开发,并联合Google、Exponent和Tilde等公司推出的JavaScript包管理工具,旨在提供更优的包管理体验,解决npm(Node Package Manager)的一些痛点。Yarn的功能特点主要包括以下几个方面࿱…...
深度学习算法bert
bert 属于自监督学习的一种(输入x的部分作为label) 1. bert是 transformer 中的 encoder ,不同的bert在encoder层数、注意力头数、隐藏单元数不同 2. 假设我们有一个模型 m ,首先我们为某种任务使用大规模的语料库预训练模型 m …...
PyTorch - 神经网络基础
神经网络的主要原理包括一组基本元素,即人工神经元或感知器。它包括几个基本输入,例如 x1、x2… xn ,如果总和大于激活电位,则会产生二进制输出。 样本神经元的示意图如下所述。 产生的输出可以被认为是具有激活电位或偏差的加权…...
docker-compose搭建minio对象存储服务器
docker-compose搭建minio对象存储服务器 最近想使用oss对象存储进行用户图片上传的管理,了解了一下例如aliyun或者腾讯云的oss对象存储服务,但是呢涉及到对象存储以及经费有限的缘故,决定自己手动搭建一个oss对象存储服务器; 首先…...
vue3使用pinia中的actions,需要调用接口的话
actions,需要调用接口的话,假如页面想要调用actions中的方法获取数据, 必须使用try catch async await 进行包裹,详情看下面代码 import {defineStore} from pinia import {reqCode,reqUserLogin} from ../../api/hospital/i…...
Python酷库之旅-第三方库Pandas(003)
目录 一、用法精讲 4、pandas.read_csv函数 4-1、语法 4-2、参数 4-3、功能 4-4、返回值 4-5、说明 4-6、用法 4-6-1、创建csv文件 4-6-2、代码示例 4-6-3、结果输出 二、推荐阅读 1、Python筑基之旅 2、Python函数之旅 3、Python算法之旅 4、Python魔法之旅 …...
社交电商中的裂变营销利器,二级分销模式,美妆家具成功案例分享
二级分销返佣模式是一种帮助商家迅速扩大市场覆盖的有效营销策略,不仅能降低营销成本,还能提升品牌知名度。下面通过两个具体的案例来说明这种模式的好处和优势。 某知名美妆品牌在市场竞争日益激烈的情况下,决定采用二级分销返佣模式进行市场…...
【国产开源可视化引擎Meta2d.js】图层
独立图层 每个图元都有先后绘画顺序,即每个图元拥有一个独立图层,即meta2d.data().pens的数组索引。 可以通过meta2d.top/bottom/up/down等函数改变独立图层顺序。 分组图层 通过标签可以标识一个分组图层,通过meta2d.find(图层标签)获取…...
基于Redisson实现分布式锁
基于redisson实现分布式锁 之前背过分布式锁几种实现方案的八股文,但是并没有真正自己实操过。现在对AOP有了更深一点的理解,就自己来实现一遍。 1、分布式锁的基础知识 分布式锁是相对于普通的锁的。普通的锁在具体的方法层面去锁,单体应…...
Android Studio下载Gradle特别慢,甚至超时,失败。。。解决方法
使用Android studio下载或更新gradle时超级慢怎么办? 切换服务器,立马解决。打开gradle配置文件 修改服务器路径 distributionUrlhttps\://mirrors.cloud.tencent.com/gradle/gradle-7.3.3-bin.zip 最后,同步,下载,速…...
leetcode--二叉树中的最长交错路径
leetcode地址:二叉树中的最长交错路径 给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下: 选择二叉树中 任意 节点和一个方向(左或者右)。 如果前进方向为右,那么移动到当前节点的的右子节点&…...
c++ primer plus 第15章友,异常和其他:15.1.3 其他友元关系
c primer plus 第15章友,异常和其他:15.1.3 其他友元关系 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 15.1.3 其他友元关系 提示:写完文章后,目录可以自动生成,如何生成可…...
uniapp+vue3页面跳转和传参
页面跳转: uni.navigateTo({url: /pages/index}) 返回上一层: uni.navigateBack ({delta: 1 }) 页面跳转时传参: 跳转前的页面: uni.navigateTo({url: "/pages/index?id123"}) 跳转后的页面: onLoa…...
硬链接和软链接
在Linux系统中,链接(Link)是一种特殊的文件,它指向另一个文件或目录。链接分为两种类型:硬链接(Hard Link)和软链接(也称为符号链接,Symbolic Link)。 1. 硬…...
属性描述符初探——Vue实现数据劫持的基础
目录 属性描述符——Vue实现数据劫持的基础 一、属性描述符是什么? 编辑 1.1、属性描述符示例 1.2、用属性描述符定义属性及获取对象的属性描述符 1.3、带有读取器和设置器的属性描述符 二、使用属性描述符的情景 2.1、封装和数据隐藏 使用getter和setter…...
字节也没余粮了?天底下没有永远免费的GPT-4;AI产品用订阅制就不合理!让用户掏钱的N种定价技巧嘿嘿 | ShowMeAI日报
👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 当 Coze 也开始收费:天底下没有「永远」免费的 GPT-4 注:这里 Coze 指海外版。国内版 扣子 还是免费。 Coze (海外版) 官网链接 → htt…...
【Matlab 路径优化】基于蚁群算法的XX市旅游景点线路优化系统
基于蚁群算法的XX市旅游景点线路优化系统 (一)客户需求: ①考虑旅游景点的空间分布、游客偏好等因素,实现了旅游线路的智能规划 ②游客选择一景点出发经过所要游览的所有景点只一次,最后回到出发点的前提下…...
创新音乐体验:foobox-cn全攻略
创新音乐体验:foobox-cn全攻略 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 在数字音乐时代,如何将本地播放器与网络电台无缝融合,打造个性化的音乐中心…...
IIC驱动进阶:实现非连续寄存器批量配置的模块化设计
1. IIC总线驱动开发的痛点与挑战 第一次接触摄像头模块配置时,我被密密麻麻的寄存器列表吓到了。OV5640摄像头需要配置上百个寄存器,地址从0x3100到0x5FFF不等,每个寄存器都有特定功能。更麻烦的是,这些寄存器地址完全不连续&…...
零基础玩转Qwen2.5-7B-Instruct:Streamlit可视化界面一键启动
零基础玩转Qwen2.5-7B-Instruct:Streamlit可视化界面一键启动 1. 项目概览 Qwen2.5-7B-Instruct是阿里通义千问推出的旗舰级大语言模型,拥有70亿参数规模,在逻辑推理、长文本创作、代码生成等专业场景展现出远超轻量模型的性能。本项目基于…...
AI绘画辅助:OpenClaw+ollama-QwQ-32B批量处理Stable Diffusion提示词
AI绘画辅助:OpenClawollama-QwQ-32B批量处理Stable Diffusion提示词 1. 为什么需要AI绘画工作流优化 作为一个经常使用Stable Diffusion进行创作的数字艺术家,我一直在寻找提升工作效率的方法。最让我头疼的不是模型本身,而是如何将脑海中的…...
Proteus仿真C51单片机:用汇编实现一个简易的脉冲计数器(附完整代码和电路图)
Proteus仿真C51单片机:用汇编实现一个简易的脉冲计数器(附完整代码和电路图) 当你第一次接触单片机编程时,可能会被各种寄存器、中断和端口配置搞得晕头转向。今天,我们就用一个实实在在的脉冲计数器项目,带…...
音频工程师必看:奈奎斯特采样定理在实际录音中的5个常见误区
音频工程师必看:奈奎斯特采样定理在实际录音中的5个常见误区 在专业音频制作领域,采样率设置是决定录音质量的基础性环节。许多工程师虽然熟悉44.1kHz或48kHz这些标准数字,却对背后的奈奎斯特采样定理存在认知偏差。这些误解轻则导致后期处理…...
【效率翻倍】不止是安装:用Apache 2.4 + Win10快速搭建本地PHP/WordPress测试环境
效率翻倍:Apache 2.4 Win10 构建全功能PHP/WordPress开发环境实战指南 在本地开发环境中快速搭建Web服务器是每个PHP开发者或WordPress站长的必备技能。传统教程往往止步于Apache的基础安装,却忽略了实际开发中需要的完整工具链——从PHP解释器集成到虚…...
3种方案实现小米智能家居与Home Assistant无缝集成
3种方案实现小米智能家居与Home Assistant无缝集成 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 你是否遇到过智能家居设备品牌碎片化的困扰?是否希望用统…...
7个终极技巧:提升SwiftyUserDefaults性能,避开常见陷阱
7个终极技巧:提升SwiftyUserDefaults性能,避开常见陷阱 【免费下载链接】SwiftyUserDefaults Modern Swift API for NSUserDefaults 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftyUserDefaults SwiftyUserDefaults是一个为NSUserDefaults提…...
基于MPC的双馈风机暂态过电压抑制策略研究
基于MPC的双馈风机暂态过电压抑制策略研究 摘要 弱电网条件下,双馈风机(DFIG)在电网故障清除瞬间易发生暂态过电压。传统矢量控制(VC)中,无功电流外环PI控制器存在响应滞后,导致无功功率回撤速度无法匹配系统电压的突变。本文提出一种基于模型预测控制(MPC)的转子侧…...
