算法记录,每日一题_TwoSum02

TwoSum

速度有点慢。。再优化下。不过解题思考只花了5分钟。。

var twoSum = function(nums, target) {
    if(nums==null ||nums.length==0 || target == null){
        return;
    }
    var curpos = 0;
    while(curpos<=nums.length){
        if(curpos == nums.length){
            return;
        }
        for(var i=(curpos+1);i<nums.length;i++){
            if(nums[curpos]+nums[i] == target){
                return [curpos,i]
            }
        }
        curpos++
    }
};

Ok,68ms…增加一倍速度。。有点欢乐。真不道如何比这个还快。

执行用时 :68 ms, 在所有 JavaScript 提交中击败了81.18%的用户

 

//Hash表解法。应该是所有语言的标准解法,60 ms

很奇怪的是,

if(nums==null ||nums.length==0 || target == null){
        return;
    }
我加了这个,反而变慢了。。相当于执行29次这个判断。。拖慢了速度
标准答案

var twoSum = function(nums, target) {
    let numsObj = {}
    for (let i = 0; i < nums.length; i++) {
        let current = nums[i]
        let match = target - current
        if (match in numsObj) {
            return [i, numsObj[match]]
        }
        numsObj[current] = i
    }
};

经过测试。。每次提交结果都不同。见鬼了这玩意

 

所以测试用例是随机生成的。这个速度如果是简单的题目,也是看运气。