计算两个数之和
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 []; };