JS 實作兩數之和
給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,并回傳他們的陣列下標,
你可以假設每種輸入只會對應一個答案,但是,你不能重復利用這個陣列中同樣的元素,
示例:
給定 nums=[2,7,11,15],target=9
因為nums[0]+nums[1]=2+7=9
所以回傳[0,1]
思路
使用一個map將遍歷過的數字存起來,值作為key,下標作為值,
對于每一次遍歷:
- 取map中查找是否有key為target-nums[i]的值
- 如果找到了,則條件成立,回傳,
- 如果沒取到,將當前值作為key,下標作為值存入map
時間復雜度O(n)
空間復雜度O(n)
對Map的理解
| key | 2 | 7 | 11 | 15 |
|---|---|---|---|---|
| value | 0 | 1 | 2 | 3 |
var twoSum=function(nums,target){
//生成一個map
const map={};
if(Array.isArray(nums)){
for(let i=0;i<nums.length;i++)
{
//如果map[key] 不存在,則會回傳undefined
if(map[target-nums[i]]!=undefined){
return [map[target-nums[i],i];
}else{
// 將nums中第i個數作為map的key,索引i作為map的value存入map中
map[nums[i]=i;
}
}
}
return [];
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/378220.html
標籤:其他
