leetcode1 两数之和 哈希表

embedded/2025/3/6 6:16:35/

什么时候使用哈希法,当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。

242. 有效的字母异位词 (opens new window)这道题目是用数组作为哈希表来解决哈希问题,349. 两个数组的交集 (opens new window)这道题目是通过set作为哈希表来解决哈希问题。

本题呢,我就需要一个集合来存放我们遍历过的元素,然后在遍历数组的时候去询问这个集合,某元素是否遍历过,也就是 是否出现在这个集合。

枚举 nums 中的 x,再找数组中是否存在 target -x。在一堆数中找一个数用哈希。

两数之和的求解可以分为以下 3 步:

  1. 创建一个哈希表。key 存储 nums[i],value 存储 i

  2. 遍历 nums 数组,对于当前元素 nums[i],查询哈希表中是否存在 target - nums[i]。

  3. 若存在,返回下标,如不存在,nums[i] 存入哈希表,继续第 2 步。

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> hash;vector<int> out;for(int i = 0; i < nums.size(); i++){if(hash.find(target - nums[i]) != hash.end()){out.push_back(i);out.push_back(hash[target - nums[i]]);break;}hash[nums[i]] = i;}return out;}
};

一开始的错误:

对于当前元素 nums[i],我们需要检查的是 target - nums[i] 是否在哈希表中。

在将结果存入 out 时,你错误地使用了 hash[nums[i]] 而不是 i。具体来说,out.push_back(hash[nums[i]]) 应该是 out.push_back(i),因为 i 是当前数字的索引,而 hash[nums[i]] 是之前存储的索引。


http://www.ppmy.cn/embedded/170414.html

相关文章

Docker 学习(一)

一、Docker 核心概念 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其所有依赖&#xff08;代码、运行时、系统工具、库等&#xff09;打包成一个轻量级、可移植的“容器”&#xff0c;实现 “一次构建&#xff0c;随处运行”。 1、容器&#xff08;Container…

SpringBoot为什么要禁止循环依赖?

大家好&#xff0c;我是锋哥。今天分享关于【SpringBoot为什么要禁止循环依赖?】面试题。希望对大家有帮助&#xff1b; SpringBoot为什么要禁止循环依赖? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot 和 Spring 框架之所以要避免循环依赖&#xf…

visual studio 2022中如何添加项目到解决方案中

在Visual Studio 2022中将现有项目添加到解决方案中&#xff0c;可按照以下步骤操作&#xff1a; ​打开解决方案资源管理器​ 在Visual Studio主界面中&#xff0c;通过菜单栏选择 ​视图 > 解决方案资源管理器&#xff0c;或直接使用快捷键打开该工具窗口。 ​右键添加现…

【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)

背景&#xff1a; 前几天实在忍受不了CHD-WIFI动不动就断开&#xff0c;一天要重新连接&#xff0c;点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本&#xff0c;那样我就可以解放双手&#xff0c;随时用WIFI就行了&#xff0c;但是没有找到。于是我就…

华为hcie证书有什么作用?

新盟教育 专注华为认证培训十余年 为你提供认证一线资讯&#xff01; 在当今数字化飞速发展的时代&#xff0c;ICT行业对专业人才的需求日益增长。华为HCIE证书作为华为认证体系中的最高级别认证&#xff0c;无疑是众多IT从业者追求的目标。那么&#xff0c;华为HCIE证书到底有…

PHP之常用函数

在你有别的编程语言的基础下&#xff0c;你想学习PHP&#xff0c;可能要了解的一些关于常用函数的信息。 获取时间 //获取时间 后面跟自定义时间格式 echo date("Y-m-d H:i:s");删除变量 unset($a);判断变量是否存在 var_dump(isset($a));判断变量是否为null va…

springboot3.x下集成hsqldb数据库

springboot3.x下集成hsqldb数据库 本文使用目前最新的sringboot3.4.3 和HyperSQL 2.7.4演示 HSQLDB数据库简介 HSQLDB&#xff08;HyperSQL DataBase&#xff09;是一个开放源代码的JAVA数据库。 可以透过 jdbc driver 来存取, 支持 ANSI-92 标准的 SQL 语法, 而且他占的空…

Anolis服务器Arm64架构服务器配置(其他版本服务器解决方式思路一质)

Anolis服务器Arm64架构服务器配置 1.nginx配置1.1.尝试安装nginx1.2.资源准备1.2.1.查看服务器系统版本:1.2.2.下载依赖包:1.3.正式安装nginx1.3.1.下载nginx并上传服务器1.3.2.开始安装nginx1.4.防火墙配置1.4.1.直接关闭防火墙:不推荐,但省事1.4.2.命令介绍1.4.3.配置开启…