標題想了很久,本來要寫刷題和演算法圖鑑的心得筆記,但寫在同一篇文章好像又太過雜亂了,所以姑且先分段寫。
這個禮拜除了修改履歷和請教已在前後端打滾幾年的朋友外,也終於開始刷題了。
雖然只寫了六題,但總比原地踏步好?
Two Sum
給一整數,並要求回傳包含一陣列中相加為目標整數 index 的陣列
array 的 method 來解,雖然比較語意化但效能不好Map 物件來檢查陣列內容Longest Common Prefix
給一含有數個字串的陣列,要求回傳相同前綴的字串
sort 會依照字元的 Unicode 編碼位置進行排序substring 和 substr 可以提取字符,且後者並不被推薦使用;
類似的方法有replace 和 sliceSearch Insert Position
給一含有數個整數的陣列,要求將給定的整數加入此陣列,使其為遞增排序,再回傳插入的 index。題目要求的時間複雜度為 O(log n)
推薦使用二分順序法
Integer to Roman
這題的難度是 Medium,只是當初被 AC 當作挑戰題所以解過 只是以前用陣列而不是物件或 Map 來儲存資料,所以可以學習當時消化不了的觀念
Object.entries() 回傳可被迭代的 key-value 物件,可以藉此將 Object 轉換為 Map。
類似 for ... in ,只是後者會還會列舉屬性。Array.reduce() 傳入函式,並將陣列化為單一值。剛好此題要求最終回傳數值,所以特別適合此方法。String.repeat() 回傳指定數量的新字串;可參考 String.concat()Valid Parentheses
字串內只能有大中小括號,且必須成對,最後回傳布林值
成對代表首尾相應,以上述例子而言:
此題重點應該是複習 Array.pop() 和 Array.push()
也是可以用 Array.unshift() 和 Array.shift() ,只是會增加時間複雜度
Implement strStr()
回傳符合 needle 字串的第一個字符的 index,若無則回傳 -1 ,空字串則回傳 0
算是複習 Array.substring的用法