1.题目
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。
2.思路
语言:js
思路:map对象
3.实现代码
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
// 解法1:
var twoSum = function(nums, target) {
map = new Map()
for (let i = 0; i < nums.length; i++) {
a = target - nums[i]
if (map.has(a)) {
return [map.get(a), i]
}
map.set(nums[i], i);
// console.log(map)
}
};
console.log('输出:', twoSum([15, 7, 11, 15], 26))
// 解法2:
// 时间复杂度: O(N ^ 2)最坏情况下数组中任意两个数都要被匹配一次。
// 空间复杂度: O(1) O(1)。
var two = function(nums, target) {
for (let i = 0; i < nums.length; i++) {
a = target - nums[i];
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
return [i, j]
}
}
}
}
console.log('输出:', two([15, 7, 11, 15], 26))
// forEach
var third = (nums, target) => {
let map = new Map();
let list = [];
nums.forEach((item, index) => {
let a = target - item;
if (map.has(a)) {
return list = [map.get(a), index]
}
map.set(item, index)
})
return list;
}
console.log('输出:', third([15, 7, 11, 15], 26))
// map
var four = (nums, target) => {
let map = new Map();
let list = []
nums.map((item, index) => {
let a = target - item;
if (map.has(a)) {
list = [map.get(a), index];
return false;
}
map.set(item, index)
})
return list;
}
console.log('输出:', four([2, 7, 11, 15], 9))
// for of 可以正确响应break、continue和return语句
var five = (nums, target) => {
let map = new Map();
for (let [i, item] of new Map(nums.map((item, i) => [i, item]))) {
let a = target - item;
if (map.has(a)) {
return [map.get(a), i]
}
map.set(item, i)
}
}
console.log('输出:', five([2, 7, 11, 15], 9))
// for of
var six = (nums, target) => {
let map = new Map();
for (let [i, item] of nums.entries()) {
let a = target - item;
if (map.has(a)) {
return [map.get(a), i]
}
map.set(item, i)
}
}
console.log('输出:', six([2, 7, 11, 15], 9))
//for in
var seven = (nums, target) => {
let map = new Map();
for (let i in nums) {
let a = target - nums[i];
if (map.has(a)) {
return [map.get(a), i]
}
map.set(nums[i], i)
}
}
console.log('输出:', seven([2, 7, 11, 15], 9))
网友评论