当前位置: 首页 > news >正文

【算法 - 哈希表】两数之和

这里写自定义目录标题

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



两数之和

题目解析

在这里插入图片描述



思路

解法一 :暴力枚举 依次遍历

  • 时间复杂度 O(n^2)
    暴力枚举两层for()循环遍历O(n^2)
  • 空间复杂度 无
  1. 先固定其中一个数
  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};}
};

在这里插入图片描述

相关文章:

【算法 - 哈希表】两数之和

这里写自定义目录标题 两数之和题目解析思路解法一 &#xff1a;暴力枚举 依次遍历解法二 &#xff1a;使用哈希表来做优化 核心逻辑为什么之前的暴力枚举策略不太好用了&#xff1f;所以&#xff0c;这就是 这道题选择 固定一个数&#xff0c;再与其前面的数逐一对比完后&…...

【深度学习】图形模型基础(5):线性回归模型第一部分:认识线性回归模型

1. 回归模型定义 最简单的回归模型是具有单一预测变量的线性模型&#xff0c;其基本形式如下&#xff1a; y a b x ϵ y a bx \epsilon yabxϵ 其中&#xff0c; a a a 和 b b b 被称为模型的系数或更一般地&#xff0c;模型的参数。 ϵ \epsilon ϵ 代表误差项&#…...

2024 年第十四届 APMCM 亚太地区大学生数学建模竞赛B题超详细解题思路+数据预处理问题一代码分享

B题 洪水灾害的数据分析与预测 亚太中文赛事本次报名队伍约3000队&#xff0c;竞赛规模体量大致相当于2024年认证杯&#xff0c;1/3个妈杯&#xff0c;1/10个国赛。赛题难度大致相当于0.6个国赛&#xff0c;0.8个妈杯。该比例仅供大家参考。 本次竞赛赛题难度A:B:C3:1:4&…...

Yarn有哪些功能特点

Yarn是一个由Facebook团队开发&#xff0c;并联合Google、Exponent和Tilde等公司推出的JavaScript包管理工具&#xff0c;旨在提供更优的包管理体验&#xff0c;解决npm&#xff08;Node Package Manager&#xff09;的一些痛点。Yarn的功能特点主要包括以下几个方面&#xff1…...

深度学习算法bert

bert 属于自监督学习的一种&#xff08;输入x的部分作为label&#xff09; 1. bert是 transformer 中的 encoder &#xff0c;不同的bert在encoder层数、注意力头数、隐藏单元数不同 2. 假设我们有一个模型 m &#xff0c;首先我们为某种任务使用大规模的语料库预训练模型 m …...

PyTorch - 神经网络基础

神经网络的主要原理包括一组基本元素&#xff0c;即人工神经元或感知器。它包括几个基本输入&#xff0c;例如 x1、x2… xn &#xff0c;如果总和大于激活电位&#xff0c;则会产生二进制输出。 样本神经元的示意图如下所述。 产生的输出可以被认为是具有激活电位或偏差的加权…...

docker-compose搭建minio对象存储服务器

docker-compose搭建minio对象存储服务器 最近想使用oss对象存储进行用户图片上传的管理&#xff0c;了解了一下例如aliyun或者腾讯云的oss对象存储服务&#xff0c;但是呢涉及到对象存储以及经费有限的缘故&#xff0c;决定自己手动搭建一个oss对象存储服务器&#xff1b; 首先…...

vue3使用pinia中的actions,需要调用接口的话

actions&#xff0c;需要调用接口的话&#xff0c;假如页面想要调用actions中的方法获取数据&#xff0c; 必须使用try catch async await 进行包裹&#xff0c;详情看下面代码 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魔法之旅 …...

社交电商中的裂变营销利器,二级分销模式,美妆家具成功案例分享

二级分销返佣模式是一种帮助商家迅速扩大市场覆盖的有效营销策略&#xff0c;不仅能降低营销成本&#xff0c;还能提升品牌知名度。下面通过两个具体的案例来说明这种模式的好处和优势。 某知名美妆品牌在市场竞争日益激烈的情况下&#xff0c;决定采用二级分销返佣模式进行市场…...

【国产开源可视化引擎Meta2d.js】图层

独立图层 每个图元都有先后绘画顺序&#xff0c;即每个图元拥有一个独立图层&#xff0c;即meta2d.data().pens的数组索引。 可以通过meta2d.top/bottom/up/down等函数改变独立图层顺序。 分组图层 通过标签可以标识一个分组图层&#xff0c;通过meta2d.find(图层标签)获取…...

基于Redisson实现分布式锁

基于redisson实现分布式锁 之前背过分布式锁几种实现方案的八股文&#xff0c;但是并没有真正自己实操过。现在对AOP有了更深一点的理解&#xff0c;就自己来实现一遍。 1、分布式锁的基础知识 分布式锁是相对于普通的锁的。普通的锁在具体的方法层面去锁&#xff0c;单体应…...

Android Studio下载Gradle特别慢,甚至超时,失败。。。解决方法

使用Android studio下载或更新gradle时超级慢怎么办&#xff1f; 切换服务器&#xff0c;立马解决。打开gradle配置文件 修改服务器路径 distributionUrlhttps\://mirrors.cloud.tencent.com/gradle/gradle-7.3.3-bin.zip 最后&#xff0c;同步&#xff0c;下载&#xff0c;速…...

leetcode--二叉树中的最长交错路径

leetcode地址&#xff1a;二叉树中的最长交错路径 给你一棵以 root 为根的二叉树&#xff0c;二叉树中的交错路径定义如下&#xff1a; 选择二叉树中 任意 节点和一个方向&#xff08;左或者右&#xff09;。 如果前进方向为右&#xff0c;那么移动到当前节点的的右子节点&…...

c++ primer plus 第15章友,异常和其他:15.1.3 其他友元关系

c primer plus 第15章友&#xff0c;异常和其他&#xff1a;15.1.3 其他友元关系 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 15.1.3 其他友元关系 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可…...

uniapp+vue3页面跳转和传参

页面跳转&#xff1a; uni.navigateTo({url: /pages/index}) 返回上一层&#xff1a; uni.navigateBack ({delta: 1 }) 页面跳转时传参&#xff1a; 跳转前的页面&#xff1a; uni.navigateTo({url: "/pages/index?id123"}) 跳转后的页面&#xff1a; onLoa…...

硬链接和软链接

在Linux系统中&#xff0c;链接&#xff08;Link&#xff09;是一种特殊的文件&#xff0c;它指向另一个文件或目录。链接分为两种类型&#xff1a;硬链接&#xff08;Hard Link&#xff09;和软链接&#xff08;也称为符号链接&#xff0c;Symbolic Link&#xff09;。 1. 硬…...

属性描述符初探——Vue实现数据劫持的基础

目录 属性描述符——Vue实现数据劫持的基础 一、属性描述符是什么&#xff1f; ​编辑 1.1、属性描述符示例 1.2、用属性描述符定义属性及获取对象的属性描述符 1.3、带有读取器和设置器的属性描述符 二、使用属性描述符的情景 2.1、封装和数据隐藏 使用getter和setter…...

字节也没余粮了?天底下没有永远免费的GPT-4;AI产品用订阅制就不合理!让用户掏钱的N种定价技巧嘿嘿 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;ShowMeAI官网 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 1. 当 Coze 也开始收费&#xff1a;天底下没有「永远」免费的 GPT-4 注&#xff1a;这里 Coze 指海外版。国内版 扣子 还是免费。 Coze (海外版) 官网链接 → htt…...

【Matlab 路径优化】基于蚁群算法的XX市旅游景点线路优化系统

基于蚁群算法的XX市旅游景点线路优化系统 &#xff08;一&#xff09;客户需求&#xff1a; ①考虑旅游景点的空间分布、游客偏好等因素&#xff0c;实现了旅游线路的智能规划 ②游客选择一景点出发经过所要游览的所有景点只一次&#xff0c;最后回到出发点的前提下&#xf…...

KLayout 0.29.12版图编辑工具:DRC验证引擎性能提升20%与多工艺节点设计支持

KLayout 0.29.12版图编辑工具&#xff1a;DRC验证引擎性能提升20%与多工艺节点设计支持 【免费下载链接】klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout KLayout是一款开源的集成电路版图编辑与验证工具&#xff0c;专注于GDSII/O…...

Windows右键菜单终极优化:ContextMenuManager完全掌控指南

Windows右键菜单终极优化&#xff1a;ContextMenuManager完全掌控指南 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单是日常操作中使用最频繁的…...

ncmdump终极指南:3分钟学会网易云音乐NCM格式免费解密

ncmdump终极指南&#xff1a;3分钟学会网易云音乐NCM格式免费解密 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经下载了网易云音乐的歌曲&#xff0c;却发现它们都是无法在其他播放器打开的NCM格式&#xff1f;别担心&am…...

从零到专业:Sunshine虚拟手柄配置的5个关键突破点

从零到专业&#xff1a;Sunshine虚拟手柄配置的5个关键突破点 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾在深夜准备享受游戏时&#xff0c;发现手柄在Sunshine串流中…...

Burp Suite MFA插件开发实战:状态机驱动的多因素认证自动化

1. 这不是“加个验证码”那么简单&#xff1a;为什么MFA插件开发是Burp生态里最被低估的硬功夫你肯定见过这样的场景&#xff1a;测试一个银行后台&#xff0c;登录流程走完用户名密码后&#xff0c;弹出Google Authenticator六位码&#xff1b;再点一下&#xff0c;又跳转到短…...

别再为DBSCAN调参发愁了!用Python的sklearn轻松上手OPTICS聚类(附实战代码)

用OPTICS算法告别DBSCAN调参噩梦&#xff1a;Python实战全解析当面对不规则形状或密度不均的数据集时&#xff0c;密度聚类算法往往能大显身手。DBSCAN作为其中最著名的代表&#xff0c;却让无数数据科学家又爱又恨——它的表现极度依赖两个关键参数ε和MinPts的选择&#xff0…...

基于Hugging Face BART模型构建文本摘要服务:从原理到部署实战

1. 项目概述&#xff1a;从零构建一个可用的文本摘要服务文本摘要&#xff0c;这个听起来有点学术的词&#xff0c;其实离我们很近。想想看&#xff0c;每天面对海量的新闻、报告、论文&#xff0c;甚至冗长的会议纪要&#xff0c;谁不想快速抓住核心要点&#xff1f;这就是文本…...

ml_edm:基于成本敏感的时间序列早期分类Python工具包详解

1. 项目概述在工业监控、医疗诊断和金融风控这些领域&#xff0c;我们常常面对一个共同的困境&#xff1a;数据是随着时间一点点“流”进来的&#xff0c;但决策却不能等到所有数据都齐备了再做。比如&#xff0c;一台设备传感器传回的振动信号刚开始出现异常&#xff0c;你是立…...

数字-模拟量子机器学习:NISQ时代AI的务实路径

1. 量子机器学习&#xff1a;当AI遇见量子世界最近几年&#xff0c;一个词在科技圈里被反复提及&#xff1a;量子优势。听起来很科幻&#xff0c;对吧&#xff1f;但如果你深入了解一下当前最前沿的量子计算硬件——那些被称为NISQ&#xff08;含噪声中等规模量子&#xff09;的…...

量子计算中的李群与李代数:从数学基石到时间最优控制实践

1. 从对称性到量子操控&#xff1a;李群与李代数的核心角色 在量子信息处理的世界里&#xff0c;我们每天都在与“对称性”打交道。一个量子比特的旋转&#xff0c;一个多体纠缠态的演化&#xff0c;甚至一个量子算法的设计&#xff0c;其背后都隐藏着一种优美的数学结构——连…...