leetcode算法练习- 两数之和
2019-03-28 本文已影响0人
土豪码农
第一次提交
第一次提交,先用个最笨的方法,两层循环先把需求实现了吧,但是效率非常低,执行用时204 ms,实在是一个笨方法
var twoSum = function(nums, target) {
for (let i = 0; i < nums.length; i++) {
const indexArr = [];
const objP = nums[i];
for (let j = i+1; j < nums.length; j++) {
const objC = nums[j];
if(objP+objC === target){
indexArr[0] = i;
indexArr[1] = j;
break;
}
}
if(indexArr[1]){
return indexArr;
}
}
};
第二次提交
第二次提交利用了双指针的算法,两个指针同时移动,肯定会比一个来的快和省事,执行用时只用了 136 ms,比第一次好多了
var twoSum = function(nums, target) {
let i=0,j=nums.length-1;
const arr = [...nums];
nums.sort((a,b)=>(a-b));
for (; i < j; i++) {
while (nums[i]+nums[j] >target){
j--
}
if(nums[i]+nums[j] === target){
return [arr.indexOf(nums[i]),arr.lastIndexOf(nums[j])]
}
}
};