JavaScript Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
解法一双重for循坏暴力破解
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let result = [];
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] === target) {
result.push(i);
result.push(j);
}
}
}
return result;
};
❤ 解法一双重for循坏暴力破解Runtime:160ms,Memory:34.7MB,时间复杂度是O(n^2),暴力破解时间复杂度高
function hasSum(arr, k) {
hashMap = {};
for (let value of arr) {
if (hashMap[value]) {
return true;
} else {
hashMap[k - value] = true
}
return false
}
}
使用ES6的数据结构Map
使用ES6的数据结构Map时间复杂度是O(n)
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function (nums, target) {
let map = new Map();
for (let i = 0; i < nums.length; i ++) {
return [map.get(target -nums[i]), i];
} else {
map.set[nums[i], i]
}
return []
}
参考链接