two-sum

  可能进不了大厂,但是还是要努力。

  目前刷题主要是解决题目,关于复杂度的考量,emmm,下次一定。先做最简单的。。。。

题目描述

给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的
假设给出的数组中只存在唯一解
例如:

给出的数组为 {2, 7, 11, 15},目标值为9
输出 ndex1=1, index2=2

输入:
[3,2,4],6
输出:

[2,3]

方法一:暴力破解,两次循环查询

function twoSum( numbers , target ) {
// write code here
for (var i = 0; i < numbers.length; i++) {
for (var j = i + 1; j < numbers.length; j++) {
if (numbers[i] + numbers[j] === target) {
return console.log([i+1, j+1]);
}
}
}
}
module.exports = {
twoSum:twoSum
};

方法二:哈希表查询

var twoSum = function(nums, target) {
var hash={};
for(var i= 0;i<nums.length;i++){
var l = nums[i];
var j = hash[target-l];
if(j!=undefined){
return[j,i]
}
hash[l] = i;
}
};

原文地址:https://www.cnblogs.com/zhangjiabing/p/13221131.html