求数组内满足特定值的元素索引
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要快
网友评论