经典的第一题,直接上代码。缓存
直接循环两次暴力解题。bash
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
if(nums&&nums.length<2) return []
var index = 0
while(index<nums.length){
var firstNum = nums[index]
for(let i = index+1;i< nums.length;i++){
var secondNum = nums[i]
if(firstNum+secondNum == target ) return [index,i]
}
index++
}
return []
};
复制代码
重点在于咱们使用 Object 缓存了计算结果:
key:目标值与当前值的 差值
value:当前值的 index
获得结果的条件:找到了缓存中须要的差值优化
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
// key calue cache
var cache = {}
for(let i = 0;i< nums.length;i++){
if(typeof cache[nums[i]] !== 'undefined'){
//bingo: return resualt
return [ cache[nums[i]],i ]
}else{
// miss: cache diff and index
cache[target - nums[i]] = i
}
}
return []
};
复制代码
贴个优化结果吧:ui