leecode 1 两数之和

2018-06-04  本文已影响0人  windyboy

求数组内满足特定值的元素索引

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

方法一

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for(var i=0;i<nums.length;i++){
        for(var j=i+1;j<nums.length;j++){
            if(nums[j]==target - nums[i]){
                var res = [i,j];
                return res;
            }
        }
    }
    return 'no have';
};

这种方法容易想,时间复杂度为n2

方法二

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    var temp = new Array();
    for(var i=0;i<nums.length;i++){
       var complement = target - nums[i];
       if(temp.hasOwnProperty(complement)){
           var res = [temp[complement],i];
           return res;
       }
       temp[nums[i]] = i;
    }
    return 'no have';
};

这种方法不是很容易想,但很有趣 56ms

go重写

func twoSum(nums []int, target int) []int {
    slice:=make([]int,2)
    for i,value := range nums{
        for j:=i+1;j<len(nums);j++{
            var sum int        
            sum = value +nums[j]
            if sum==target{
                slice[0]=i
                slice[1]=j
                return slice;
            }
        }
    }
    return slice;
    
}

写的并不好,但是语言优势,比js要快

上一篇 下一篇

猜你喜欢

热点阅读