计算两个数之和

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

这种方法是遍历2次,时间复杂度为O(n2) 空间复杂度为O(1)

 

下面是使用数组键值存储,简单的hash-table  来达到时间复杂度为O(n) 空间复杂度为O(n)

var twoSum = function(nums, target) {
    var tmp = [];
    for(var i =0 ; i < nums.length ;i++){
        var des = target - nums[i];
        if(tmp.hasOwnProperty(des) && tmp.hasOwnProperty(des) != i){
            return [i,tmp[des]];
        }
        tmp[nums[i]] = i;
    }
    return [];
};

 

posted @ 2016-10-08 18:58  没离开过  阅读(229)  评论(0编辑  收藏  举报