跳至主要内容

2629.Function Composition

備註

為個人思考的思緒紀錄,可能有更優解法,歡迎指教討論共好

Topic

思考問題

  1. 跑陣列,計算加總 === target
  2. 取出加總的 index
  3. 回傳結果為陣列

寫 pseudocode

  1. for i
  2. for j = i + 1
  3. if [i] + [j] === target
  4. 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)
}
}