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])]
            }
        }
    };
上一篇下一篇

猜你喜欢

热点阅读