Leetcode题库: 1. 两数之和 Hash表思路解析。

题目:

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]
class Solution {public int[] twoSum(int[] nums, int target) {//初始化一个Map。key为数组的值,value为值的下标。Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; ++i) {//判断keys是否包含目标值减去数组中的值的结果if(hashtable.containsKey(target-nums[i])){//如果包含,那么当前map中其中一个key的值=目标值-当前int[i]的值//那么直接返回key的值的下标,以及i。(i就是下标)return new int[]{hashtable.get(target-nums[i]),i};}//否则将当前数组的值放入key,下标放入valuehashtable.put(nums[i],i);}return new int[]{};}
}

hash表解题方法的核心思路是建立数组中 值与下标的 map映射关系。

这样keys就是数组的值的集合。那么我只需要循环判断keys是否包含 target-nums[i],一旦keys中的值满足  key=target-nums[i],也就是target=nums[i]+key(题目要求)。那么就可以返回结果,题目要求是返回nums[i]key的下标。那么也就是i,以及key的下标=hashtable.get(target-nums[i])的值。因为key=target-nums[i],而hash表的value就是值的下标。

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

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

相关文章

四面体单元悬臂梁的Matlab有限元编程 | 实体单元 | Matlab源码 | 理论文本

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

Amadine mac版:矢量设计的艺术工坊,创作随心所欲!

Amadine矢量设计软件是一款功能强大且易于使用的创意工具&#xff0c;专为矢量图形设计而生。无论您是专业的设计师、插画师&#xff0c;还是寻找矢量图形设计解决方案的爱好者&#xff0c;Amadine都能满足您的需求。 Amadine Mac版软件获取 首先&#xff0c;Amadine以其直观…

全面剖析一下ThreadLocal

什么是ThreadLocal&#xff1f; ThreadLocal英文翻译过来就是&#xff1a;线程本地量&#xff0c;它其实是一种线程的隔离机制&#xff0c;保障了多线程环境下对于共享变量访问的安全性。 看到上面的定义之后&#xff0c;那么问题就来了&#xff0c;ThreadLocal是如何解决共享…

从零开始的LeetCode刷题日记:707.设计链表

一.相关链接 题目链接&#xff1a;707.设计链表 二.心得体会 这道题也是一道链表题&#xff0c;使用虚拟头节点来处理。整体的逻辑都是很简单的&#xff0c;需要注意的是判断索引值是否合理的时候&#xff0c;需要注意按索引增加链表节点时要比get和delete多一位&#xff0c;…

怎么升级python 的 chromedriver 版本?

1. 首先&#xff0c;确认您当前Python和Chromedriver的版本号。您可以通过在命令行窗口中运行以下命令来检查Python版本号&#xff1a; python -V要检查Chromedriver版本&#xff0c;请运行以下命令&#xff1a; chromedriver -v2. 下载最新版本的Chromedriver。您可以从Chrome…

Java 中创建线程多种方式介绍

在 Java 中&#xff0c;创建线程有多种方式&#xff0c;以下是最常见的四种&#xff1a; 1. **通过继承 Thread 类** 2. **通过实现 Runnable 接口** 3. **通过实现 Callable 接口** 4. **通过使用 Executor 框架** 每种方式都有其特点和适用场…

CGAL 5.6.1 - Modular Arithmetic(模板化算法)

1 导言 模块化运算是现代代数系统的基本工具。结合中国余数定理&#xff0c;它是计算 gcd、结果等算法的主力。此外&#xff0c;它还可以作为一种非常有效的过滤器&#xff0c;因为通常只需计算一个素数的模数对应值&#xff0c;就可以排除某个值为零的可能性。 2 留数和模板…

Go编译报错 link: running gcc failed: exit status 1(已解决)

背景 在对一个开源的Go程序二次开发 重新编译时 &#xff0c; 报错截图如下 报错文字如下&#xff1a;关键信息 link: running gcc failed: exit status 1 $ go build -o orchestrator-didi -i go/cmd/orchestrator/main.go go build: -i flag is deprecated # command-li…

一文搞懂Vue按钮权限

在编写Vue代码的时候&#xff0c;经常会碰到各种权限问题&#xff0c;如&#xff1a;登录权限、路由权限、按钮权限等。今天我们就好好来说一说这个按钮权限到底是怎么一回事。 文章目录 一、概念二、按钮权限的方式2.1 自定义指定2.2 v-if2.3 函数式渲染2.4 小结 三、总结 一、…

如何系统的学习Python——封装

在Python中&#xff0c;封装是一种面向对象编程的概念&#xff0c;通过将类的内部数据和方法隐藏起来&#xff0c;限制外部对其直接访问。 在Python中&#xff0c;封装可以通过以下方式实现&#xff1a; 1. 私有成员&#xff1a; 在Python中&#xff0c;可以通过在属性或方法…

客服提效工具:一键回复,效率翻倍

在快节奏的工作环境中&#xff0c;每一秒都是宝贵的。对于客服人员来说&#xff0c;每天面对的是海量的咨询和回复&#xff0c;如何在保证服务质量的同时&#xff0c;提高工作效率&#xff1f;最近&#xff0c;我被同事安利了一个神奇的工具——客服宝聊天助手。这是一款专为客…

基于单片机的天然气泄漏报警系统设计论文

目 录 摘 要 I Abstract II 1 引 言 1 2天然气泄露检测报警系统的方案设计 4 2.1 方案选择 4 2.2 天然气泄露报警系统的整体设计方案 5 2.2.1天然气泄漏报警器工作原理 5 2.2.2天然气泄漏报警器的结构 5 3天然气泄露报警的硬件部分设计 7 3.1 STC89C52单片机 7 3.2 传感器的选…

IJCAI23 - Continual Learning Tutorial

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 本篇 Tutorial 主要介绍了 CL 中的一些基本概念以及一些过往的方法。 Problem Definition Continual Learning 和 Increm…

【MOMO_Tips】批量将word转换为PDF格式

批量将word转换为PDF格式 1.打开文件–>选项–>自定义功能区–>开发工具–>确定 2.点开开发工具&#xff0c;选择第一个visual basic 3.进入页面后找到插入–>模块&#xff0c;就可以看到这样的画面之后将下列vba代码复制粘贴到模块中 Sub ConvertWordsToPd…

进程的内存布局与进程的虚拟地址空间

进程的内存布局 历史沿袭至今&#xff0c;C 语言程序一直都是由以下几部分组成的&#xff1a; ⚫ 正文段。也可称为代码段&#xff0c;这是 CPU 执行的机器语言指令部分&#xff0c;文本段具有只读属性&#xff0c;以防止程序由于意外而修改其指令&#xff1b;正文段是可以共…

精读《React Conf 2019 - Day1》

1 引言 React Conf 2019 在今年 10 月份举办&#xff0c;内容质量还是一如既往的高&#xff0c;如果想进一步学习前端或者 React&#xff0c;这个大会一定不能错过。 希望前端精读成为你学习成长路上的布道者&#xff0c;所以本期精读就介绍 React Conf 2019 - Day1 的相关内…

【报错-大数据技术-Hbase Ranger】hbase创建、删除(表、命名空间)无权限问题,但是向表put、get、scan数据报错

1、问题描述 使用hbase shell执行创建命名空间、创建表、插入数据、获取数据、查看数据、删除命名空间、删除表等命令操作,发现可以创建命名空间、创建表、删除命名空间、删除表,但是插入数据、获取数据、查看数据等操作却报没有权限的问题,但是我已在Ranger上赋予用户test…

2024主流测试工具测评,总有一款适合你!

大家好&#xff01;我是测试元宝~ 在软件开发周期中&#xff0c;测试是确保产品质量的关键环节。随着企业对于软件质量的要求日益提升&#xff0c;测试人员面临着前所未有的挑战&#xff0c;“工欲善其事必先利其器”&#xff0c;选择一款高效、实用的软件测试工具&#xff0c…

LeetCode # 547. 省份数量

547. 省份数量 题目 有 n 个城市&#xff0c;其中一些彼此相连&#xff0c;另一些没有相连。如果城市 a 与城市 b 直接相连&#xff0c;且城市 b 与城市 c 直接相连&#xff0c;那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市&#xff0c;组内不含其他没有…

Git 基于ED25519、RSA算法生成 SSH 密钥

Git 基于ED25519、RSA算法生成 SSH 密钥 基于ED25519算法&#xff0c;生成密钥对命令如下&#xff1a; ssh-keygen -t ed25519 -C "邮箱地址"基于RSA算法&#xff0c;生成密钥对命令如下&#xff1a; ssh-keygen -t rsa -C "<注释内容>"基于ED255…