「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」。
前言
最近参加了2022年三月份的蓝桥杯比赛,所以计划学习算法和数据结构相关知识,但是平时都是学习不持续,所以希望借此机会来学习此知识点。因为我是在校大三学生,所以后续的算法相关代码都是使用js来进行完成。本文更新的是leetcode算法题之--两数之和。
题目
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例
题解
/**
- @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); }
};
分析
知识点:
- map对象中存放的是{key,value}键值对;
- has(key)方法判断map中是否存在key,返回boolean值;
- get(key)方法返回map中的value值。 分析:
- var x=target-nums[i];是用目标target的值减去数组下标的值来得出数组中的另一个值;
- if语句中,则用has方法来判断这个数组中是否存在这个数组,即x;
- 如果有,则返回数组中的值和下标;
- 如果没有,则记录一下当前数值的值和下标,再来进行数组的循环和遍历,直到找到符合条件的值在输出。