LeetCode 1. 两数之和。(通过JavaScript实现)

给定一个整数数组 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]

提示:

  • 2 <= nums.length <= 10^4
  • -10^9 <= nums[i] <= 10^9
  • -10^9 <= target <= 10^9
  • 只会存在一个有效答案

解题思路: 

可以使用哈希表来解决这个问题。遍历数组,对于每个元素,检查目标值与当前元素的差值是否在哈希表中存在,如果存在,则返回两个元素的下标。如果不存在,则将当前元素添加到哈希表中。

哈希表(Hash table),也称为哈希映射(Hash map)或关联数组(Associative array),是一种用于存储键值对的数据结构。它通过将键映射到数组中的一个位置来实现快速的查找操作。

哈希表的关键操作包括:

  1. 插入(Insertion):将键值对插入到哈希表中。
  2. 查找(Lookup):根据给定的键查找对应的值。
  3. 删除(Deletion):根据给定的键从哈希表中删除对应的键值对。

在JavaScript中,Map对象可以看作是一种哈希表的实现,虽然实现细节不可见,但底层仍然会使用哈希函数来确定数组中元素的存储位置。

本题中,哈希表中的数组,元素是作为键,而数组元素的索引是作为值。

具体步骤:

  • 创建了一个新的 Map 对象,用于存储数组中的元素及其对应的索引。
  • 遍历数组 nums,i 为当前遍历的索引,从 0 开始,直到数组的末尾。
  • 计算目标值 target 与该元素的差值 complement。(这个差值表示在数组中寻找的另一个数值)
  • 检查在之前的遍历中,是否已经在哈希表 map 中存储了与当前元素对应的差值complement。
  • 如果存在,说明找到了两个数的组合使得它们的和等于目标值 target,可以直接返回这两个数的下标组成的数组 。
  • 如果没有找到符合条件的组合,将当前元素 nums[i] 作为,其对应的索引 i 作为存入哈希表 map 中。
  • 如果整个数组遍历完都没有找到符合条件的两个数,函数返回一个空数组 []。
var twoSum = function (nums, target) {const map = new Map()for (i = 0; i < nums.length; i++) {const complement = target - nums[i]if (map.has(complement)) {return [map.get(complement), i]}map.set(nums[i], i)}return [];
};

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

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

相关文章

SVG 渐变边框在 CSS 中的应用

SVG 渐变边框在 CSS 中的应用 <template><div class"home"><div class"one"><svg width"100%" height"100%"><rect x"2" y"2" width"100%" height"100%" fill&q…

【扩散模型系列1】扩散模型背景|DDPMs|LDM

目录 概述DPMDDPM前向加噪反向去噪UNet 训练阶段推理阶段 IDDPMClassifier GuidanceGLIDELDM模型结构VAE扩散模型U-Net 训练阶段推理阶段 参考资料 概述 扩散模型&#xff1a;和其他生成模型一样&#xff0c;实现从噪声&#xff08;采样自简单的分布&#xff09;生成目标数据样…

鸿蒙开发(七)添加常用控件(上)

相信大家已经对鸿蒙开发的布局有了基本的了解。之前我们提到过&#xff0c;一个好的UI&#xff0c;离不开选择合理的布局。当然&#xff0c;也离不开适当的控件。本篇文章&#xff0c;带着大家一起学习下如何在页面里面添加常用的控件。由于控件较多&#xff0c;我会分为两篇文…

Windows®、Linux® 和 UNIX® 系统都适用的远程桌面工具 OpenText ETX

Windows、Linux 和 UNIX 系统都适用的远程桌面工具 OpenText ETX 为 Windows、Linux 和 UNIX 实施精益、经济高效的虚拟化&#xff1b;提供完整的远程 Windows 可用性&#xff1b;以类似本地的性能远程工作&#xff1b;安全地保护系统和知识产权&#xff08;IP&#xff09;&am…

关于 Runes 协议及「公开铭刻」发行机制的拓展讨论

撰文&#xff1a;MiX 编辑&#xff1a;Faust&#xff0c;极客 web3 2024 年 3 月 2 日&#xff0c;Runes 生态基础设施项目 Rune alpha 的创始人&#xff0c;在 Github 的公开议题中&#xff0c;与 Runes 协议创始人 Casey 展开了讨论&#xff0c;双方对如何拓展 Runes 协议的…

MYSQL distinct 和group by 同时使用性能急剧下降

语句&#xff1a;select distinct a from A group by a 当记录数上万&#xff0c;执行时间将达到30秒左右。 修改为 select distinct a from (select a from A group by a),执行时长会在1秒以内。 对比两条SQL 语句执行记录&#xff0c;发现修改前Handler_read_rnd_next 数量…

智慧灯杆-智慧城市照明现状分析(1)

城市道路照明是城市公共设施的重要组成部分,而随着城镇化建设的推进,城市道路照明路灯的数量越来越多,能耗越来越高,供电趋于紧张。此外,城市照明的维护工作和高昂的维护成本(人工控制、路灯巡查等),给城市管理造成了巨大的困难。管理部门需要更有效率的管理和节能方案…

支持向量机 SVM | 线性可分:软间隔模型

目录 一. 软间隔模型1. 松弛因子的解释小节 2. SVM软间隔模型总结 线性可分SVM中&#xff0c;若想找到分类的超平面&#xff0c;数据必须是线性可分的&#xff1b;但在实际情况中&#xff0c;线性数据集存在少量的异常点&#xff0c;导致SVM无法对数据集线性划分 也就是说&…

Kubernetes Operator开发实践

Operator 介绍 Operator 可以看成是 CRD Controller 的一种组合资源。Kubernetes 中的基础资源类型有 Pod、Service、Job、Deployment 等表达能力有限&#xff0c;CRD 则提供了创建新的资源类型方式&#xff1b;Controller 监听 CRD 对象实例的增、删、改事件&#xff0c;然后…

独孤思维:99%副业赚不到钱的原因

什么都学等于什么都不会。 什么都做等于什么都没做。 我遇到很多做副业的小白&#xff0c;开始信誓旦旦的说这个也要学&#xff0c;那个也要学&#xff0c;这个项目不错&#xff0c;那个项目也不错。 但结果99%的人都做不起来&#xff0c;连一个项目都没有跑通。 贪得无厌&…

GIS在地质灾害危险性评估与灾后重建中的应用

地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下&#xff0c;地质灾害在世界范围内频繁发生。我国除滑坡灾害外&#xff0c;还包括崩塌、泥石流、地面沉…

GSA、GSEA、ssGSEA、GSVA用到的统计学知识点

文章目录 概率密度函数&#xff08;probability density function&#xff0c;PDF&#xff09;分布函数&#xff08;Cumulative Distribution Function&#xff0c;CDF&#xff09;核密度估计&#xff08;KDE&#xff09;经验累计分布函数&#xff08;Empirical Cumulative Dis…

深入理解Vue.js的模板语法和数据绑定

Vue.js背景介绍 Vue.js 是一款流行的前端 JavaScript 框架&#xff0c;由**尤雨溪&#xff08;Evan You&#xff09;**开发并于2014年首次发布。Vue.js 的设计目标是通过简单易用的语法和灵活的组件化架构&#xff0c;帮助开发者构建交互性强、响应速度快的现代Web应用程序。 …

source not found for数组a的引用Exception

identityHashCode(数组名&#xff09; adressidentityHashCode(a)//将得到数组a的哈希值。在同一个数据类型下&#xff0c;同一对象的哈希值是一样的&#xff0c;同一哈希值对应同一对象。由于不同数据类型的变量哈希值生成算法不同&#xff0c;所以在数据类型不同的情况下&am…

关于esp8266的一些经验汇总,新手必看

说实话&#xff0c;esp8266的nodemcu 已经使用了2年多了&#xff0c;各种问题遇到过&#xff0c;就尝试各种解决&#xff0c;而现在回头来看真的是稀里糊涂的在用&#xff0c;当然这个问题也同样涉及到esp32. 因为最近打算自己打一块esp8266的板&#xff0c;之前打的比较多的是…

Redis冲冲冲——Redis分布式锁如何实现

目录 引出Redis分布式锁如何实现Redis入门1.Redis是什么&#xff1f;2.Redis里面存Java对象 Redis进阶1.雪崩/ 击穿 / 穿透2.Redis高可用-主从哨兵3.持久化RDB和AOF4.Redis未授权访问漏洞5.Redis里面安装BloomFilte Redis的应用1.验证码2.Redis高并发抢购3.缓存预热用户注册验证…

从根到叶:深入理解二叉搜索树

我们的心永远向前憧憬 尽管活在阴沉的现在 一切都是暂时的,转瞬即逝, 而那逝去的将变为可爱 &#x1f31d;(俄) 普希金 <假如生活欺骗了你> 1.二叉搜索树的概念 概念:搜索树&#xff08;Search Tree&#xff09;是一种有序的数据结构&#xff0c;用于存储和组…

github操作记录(踩坑)

github是程序员绕不开的东西。 网站打不开&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 明明账号密码都对却登录失败&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 重置密码失败&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 TortoiseGit如…

模型压缩-剪枝算法概述

文章目录 1. 前言1.1 模型剪枝定义2 深度神经网络的稀疏性2.1,权重稀疏2.2 激活稀疏2.3 梯度稀疏2.4,小结3. 结构化稀疏3.1,结构化稀疏分类3.1.1 Channel/Filter 剪枝3.1.2 阶段级别剪枝3.2 结构化稀疏与非结构化稀疏比较参考资料参考自:

Facebook商城号为什么被封?防封养号技巧

由于Facebook商城的高利润空间&#xff0c;越来越多的跨境电商商家注意到它的存在。Facebook作为全球最大、用户量最大的社媒平台&#xff0c;同时也孕育了一个巨大的商业生态&#xff0c;包括广告投放、商城交易等。依托背后的大流量&#xff0c;Facebook商城起号较快&#xf…