解法一:
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function (nums, target) {
let hash = {}; //创建一个对象保存,key保存数组元素,value为该元素的数组下标
for (let i = 0; i < nums.length; i++) {
if (hash[target - nums[i]] !== undefined) {
return [hash[target - nums[i]],i];
}
hash[nums[i]] = i;
}
return [];
};
执行用时:60 ms 执行速度快
内存消耗:41.4 MB 内存消耗算小
解法二:
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
for(let i = 0 ; i < nums.length; i++){
if(nums.indexOf(target - nums[i] , i+1) != -1){ //这里用includes 会再慢一点点
return [i,nums.indexOf(target - nums[i],i+1)]
}
}
};
执行用时:104 ms 执行速度慢
内存消耗:41.2 MB 内存消耗更小
解法三:
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let arr = []
for(let i = 0 ; i < nums.length; i++){
for(let j = i + 1 ; j < nums.length ; j++){
if(nums[i] + nums [j] == target){
arr.push(i);
arr.push(j);
return arr
}
}
}
};
执行用时: 96 ms 不快不慢
内存消耗: 41.5 MB 消耗很多