作者:王二狗
博客:掘金亲澡、思否沥割、知乎耗啦、簡(jiǎn)書(shū)凿菩、CSDN
點(diǎn)贊再看,養(yǎng)成習(xí)慣帜讲,每周一算法系列會(huì)一直更新下去蓄髓,你們的支持是我持續(xù)分享的最大動(dòng)力??
題目:
給定整數(shù)數(shù)組 nums
和一個(gè)目標(biāo)值 target
,請(qǐng)你在該數(shù)組中找出和為目標(biāo)值的那兩個(gè)整數(shù)舒帮,并返回他們的數(shù)組下標(biāo)会喝。
你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是玩郊,你不能重復(fù)利用這個(gè)數(shù)組中同樣的元素肢执。
示例:
給定 nums= [2,7,11,15],target = 9
因?yàn)?nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0,1]
題解:
const twoSum = (nums,target) => {
//哈希表
let map = {};
for(let i=0;i<nums.length;i++) {
//將與之相對(duì)應(yīng)的另一個(gè)數(shù)進(jìn)行保存
const complement = target - nums[i];
//在導(dǎo)入數(shù)組的同時(shí)檢查是否已經(jīng)包含目標(biāo)元素
if(map.hasOwnProperty(complement) && map[complement] !== i) {
//輸出當(dāng)前索引和哈希表對(duì)應(yīng)索引
return [i,map[complement]];
}
//若沒(méi)有包含目標(biāo)元素,則導(dǎo)入數(shù)組元素译红,繼續(xù)循環(huán)
map[nums[i]] = i;
}
}
var nums= [2,7,11,15]
var target = 9
console.log(twoSum(nums,target))
//[1,0]
告誡自己预茄,即使再累也不要忘記學(xué)習(xí),成功沒(méi)有捷徑可走侦厚,只有一步接著一步走下去耻陕。 共勉!