力扣刷题-两数之和

简介: 力扣刷题-两数之和

前言

若水从事开发已有数月,一直觉得自己特被菜,据老员工说多刷力扣可以提高自己写代码的思路,所以自己从现在开始就要刷力扣了,在此我也会说一下自己思路和思考等,不足之处还请大家多多补充!

题目

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

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

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

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

思路

这里给了我们一个nums数组,又给了一个target,这道题的意思是,让我们在nums数组中找到两个数,这两个数加起来的之和等于target变量值,我们这里可以创建一个map对象,然后通过for循环的方式进行遍历nums数组,在通过traget减去nums数组中的每个值,以此计算出那个数能跟当前的数字相加等到target变量的值,最后在检查map对象中是否存在这个数,如果有则返回结果,如果没有则把nums数组中的每个数最为key值,下标作为value值存在map对象中

实现

根据上面的思路我们来实现一下

var fn=function(nums,target){
//我们先创建一个空的Map对象
const map=new Map();
 for(let i=0;i<nums.length;i++){
 //拿target的值与nums数组中的每个值进行相减
    const elm=target-nums[i]
    //检查map中是否存在相减后的值,如果存在则进入
      if(map.has(elm)){
      //进入之后获取到当前相减值的value,也就是对应的下标,在加上当前的i返回出去一个数组
      return [map.get(elm),i];
    }else{
    //如果没有找到则进行添加,这里添加就是为了以后方便查找,所以将数组中的值作为key,下标作为value
      map.set(nums[i],i)
    }
    //如果最后没有找到则返回一个空数组
     return []
 }
}
let nums=[2,3,11,7];
let target=9;
//使用
fn(nums,target)

坚持努力,无惧未来!

相关文章
|
1天前
leetcode代码记录(两数之和
leetcode代码记录(两数之和
11 1
|
1天前
|
算法 C++
【刷题】Leetcode 1609.奇偶树
这道题是我目前做过最难的题,虽然没有一遍做出来,但是参考大佬的代码,慢慢啃的感觉的真的很好。刷题继续!!!!!!
9 0
|
1天前
|
算法 索引
【刷题】滑动窗口精通 — Leetcode 30. 串联所有单词的子串 | Leetcode 76. 最小覆盖子串
经过这两道题目的书写,相信大家一定深刻认识到了滑动窗口的使用方法!!! 下面请大家继续刷题吧!!!
12 0
|
1天前
|
算法
【刷题】 leetcode 面试题 08.05.递归乘法
递归算法是一种在计算机科学和数学中广泛应用的解决问题的方法,其基本思想是利用问题的自我相似性,即将一个大问题分解为一个或多个相同或相似的小问题来解决。递归算法的核心在于函数(或过程)能够直接或间接地调用自身来求解问题的不同部分,直到达到基本情况(也称为基础案例或终止条件),这时可以直接得出答案而不必再进行递归调用。
25 4
【刷题】 leetcode 面试题 08.05.递归乘法
|
1天前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
25 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
1天前
|
存储 算法 测试技术
|
1天前
|
算法 C语言 C++
|
1天前
leetcode代码记录(有序数组两数之和
leetcode代码记录(有序数组两数之和
13 0
|
1天前
|
存储 算法 C语言
C语言刷题~Leetcode与牛客网简单题
C语言刷题~Leetcode与牛客网简单题