leetcode力扣之--两数之和

141 阅读2分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」。

前言

最近参加了2022年三月份的蓝桥杯比赛,所以计划学习算法和数据结构相关知识,但是平时都是学习不持续,所以希望借此机会来学习此知识点。因为我是在校大三学生,所以后续的算法相关代码都是使用js来进行完成。本文更新的是leetcode算法题之--两数之和。

题目

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

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

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

示例

image.png

image.png

image.png

题解

/**

  • @param {number[]} nums
  • @param {number} target
  • @return {number[]} */ var twoSum = function(nums, target) { map =new Map(); for(var i=0;i<nums.length;i++){ var x=target-nums[i]; if(map.has(x)){ return[map.get(x),x]; } map.set(nums[i],i); }

};

分析

知识点:

  1. map对象中存放的是{key,value}键值对;
  2. has(key)方法判断map中是否存在key,返回boolean值;
  3. get(key)方法返回map中的value值。 分析:
  4. var x=target-nums[i];是用目标target的值减去数组下标的值来得出数组中的另一个值;
  5. if语句中,则用has方法来判断这个数组中是否存在这个数组,即x;
  6. 如果有,则返回数组中的值和下标;
  7. 如果没有,则记录一下当前数值的值和下标,再来进行数组的循环和遍历,直到找到符合条件的值在输出。