iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
自我挑戰組

【用 JS 學演算法】前端工程師學徒系列 第 6

【Day 06】LeetCode:Two Sum ( 用 JavaScript 學演算法 )

我們繼續透過 LeetCode #1 Two Sum 來實際感受解決問題的過程 ( 題目連結 )

一、理解題目

  • 輸入:一個 nums[] 和 target
  • 找出 nums 裡哪兩個數字相加會等於 target
  • 輸出:回傳一個陣列,紀錄該兩個值的位置

二、Edge Case

  • 值是否有負數 ? (不會)
  • 陣列長度是否會小於 2 ? (不會)
  • 會沒有答案或有 2 個以上嗎 ? (不會)

三、題目思考

使用哪種資料結構:Array

  1. 使用迴圈遍歷 nums,i
  2. 使用第二個迴圈遍歷 nums,j
  3. 判斷數字相加是否等於 target

邏輯:

let len be the length of nums
let total be 0

for i (0 to len-1) do
  for j (i+1 to len) do
    total = nums[i] + nums[j]
    if (total = target) than
      return [i,j]
    end if
  end for
end for

程式碼實作:

  const len = nums.length;
  let total = 0;
  
  for (let i=0 ; i<len-1 ; i++) {
    
    for (let j=i+1 ; j<len ; j++) {
      total = nums[i] + nums[j];
      if (target === total) {
        return [i, j]
      }
    }
  }

原文連結:LeetCode:Two Sum ( 用 JavaScript 學演算法 ) - Ted's Point 泰德觀點


上一篇
【Day 05】LeetCode:Plus One ( 用 JavaScript 學演算法 )
下一篇
【Day 07】Sorting:Insertion Sort 插入排序法 ( 用 JavaScript 學演算法 )
系列文
【用 JS 學演算法】前端工程師學徒9

尚未有邦友留言

立即登入留言