这是leetcode的第一期
是一个很神奇的地方,希望大家能也来到这里提升自己哟,而且你真的会遇见很多高端公司的面试真题
原题

简单分析可以知道
1肯定是两个数的和,不会出现三个才能拼凑答案的情况
2不能使用相同元素,就算使用也必须数组给你两个
3每个组合都有且唯一解
好了我的代码是这样的:
var twoSum = function(nums, target) {
for (var i =1;i<nums.length;i++){
now = nums.shift();
for(var j=0;j<nums.length;j++){
if(nums[j]===target-now){return [i-1,i+j]}
}
}
};
我的初步想法是,最笨速度最慢的肯定是双层的遍历,但我们其实没必要遍历我们在外层使用过的元素,因为元素不会重复使用,所以我弹出了外层使用过的元素,再遍历内层数字,这样我的执行次数就会随着代码的进行逐渐减小。
然后我读了运行速度最快的代码是这样的:

使用遍历的同时,讲数组反向hash 这样就可以直接使用键来判断是否是答案对,非常灵性