两数之和
题目描述:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
思路:
- 1、循环数组,同时利用
Map结构存储已经遍历过的元素。 - 2、每遍历一个元素,在
Map里面找是否存在符合题目要求的数字。 - 3、所有元素遍历完还没有找到目标元素,则返回。
代码
const nums = [1,2,34,4,2,2,3,4]
const target = 8
const twoSum = (nums, target) => {
let resMap = new Map();
for (let i = 0; i < nums.length; i++) {
let key = target - nums[i];
if (resMap.get(key) === undefined) {
resMap.set(nums[i], i);
} else {
return [resMap.get(key), i];
}
}
};