Solution1
簡單粗暴地遍歷所有情況
var twoSum = function(nums, target) {
var i,len = nums.length;
for (i=0;i<len-1;i++) {
for (j=i+1;j<len;j++) {
if (nums[i] + nums[j] === target) {
return [i,j];
}
}
}
};
時間復雜度 O(n^2)
空間復雜度 O(1)
Solution2
將js對象當做hashtable來使用,key是數組元素的值,value是數組元素的索引耻瑟,只遍歷一次數組,每次先查找哈希表中是否有匹配的元素酪我,如果沒有就將現有元素添加進哈希表中
var twoSum = function(nums, target) {
var i,j,len = nums.length;
var hash = {};
for (i=0;i<len;i++) {
j = target-nums[i];
if (hash[j] !== undefined)
return [i,hash[j]];
else
hash[nums[i]] = i;
}
};
時間復雜度 O(n)
空間復雜度 O(n)