經典的第一題,直接上代碼。緩存
直接循環兩次暴力解題。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