两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
- 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
-
🌰:
输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
输入:nums = [3,2,4], target = 6输出:[1,2]
输入:nums = [3,3], target = 6输出:[0,1]
解法✏:
1. 双层循环法,时间复杂度不小于O(n²)
2. 哈希表
使用map记录下nums数组中 target - item 的值以及其下标,若当前元素在map中匹配到了key,就说明key对应的index值于当前index值对应的元素相加等于target。 ```javascript const twoSum = function (nums, target) { const numMap = new Map(); let index = 0; let result = 0; nums.some((item) => { console.log(numMap); const temp = target - item; if (numMap.has(item)) {
result = numMap.get(item);return true;
} else {
numMap.set(temp, index++);} }); return [index, result]; };
const result = twoSum([2, 7, 11, 15], 9); console.log(result); ```
