美文网首页
leetcode算法练习- 两数之和

leetcode算法练习- 两数之和

作者: 土豪码农 | 来源:发表于2019-03-28 07:56 被阅读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])]
                }
            }
        };
    

    相关文章

      网友评论

          本文标题:leetcode算法练习- 两数之和

          本文链接:https://www.haomeiwen.com/subject/fmuxbqtx.html