2629.Function Composition
備註
為個人思考的思緒紀錄,可能有更優解法,歡迎指教討論共好
Topic
思考問題
- 跑陣列,計算加總 === target
- 取出加總的 index
- 回傳結果為陣列
寫 pseudocode
- for i
- for j = i + 1
- if [i] + [j] === target
- return
Solve
const twoSum = function (nums, target) {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j ++) {
if (nums[i] + nums[j] === target) {
return [i, j]
}
}
}
}
反思與優化
- 一開始沒有想到有巢狀迴圈的寫法,所以卡了一下,詢問 Gemini 我的思路有沒有對,以及我目前的問題
- 解完題後看了一下別人的解題方式,新學了一個
Map()的用法,思路是先取得target - currentNum的值,再跑for迴圈去查找有沒有這個值
const twoSum = function (nums, target ) {
const numMap = new Map();
for (let i = 0; i < nums.length; i ++) {
const currentNum = nums[i];
const complement = target - currentNum;
if (numMap.has(complement)) {
return [numMap.get(complement),i];
}
numMap.set(currentNum, i)
}
}