反轉 Linked List 是一道經典的題目,可以用分別用 :

  • 指針 (iterative)
  • 遞迴 (recursive)

兩種截然不同的風格來解答。個人認為是蠻好的題目,可以多寫幾次,並從各種不同的解答方式來說明思考,故在此筆記。要說簡單也不算,對於 recursive 解法一開始我覺得有點難理解 ! 雖然被歸類在 Easy,但我私心覺得蠻容易打擊第一次做的人的…

Continue reading

Multiple points 的操作,經常用在 array 或 linkedList 上,有幾點事情可以在刷題時特別注意:

  1. 指標會把 list 切成幾個部分,特別注意每一部份的定義

  2. list 是否有排序或可以排序

  3. 指標移動是使用快慢指標還是左右指標

  4. 會不會改變原本的 list

其中第一點,把 array 切成幾個部分,每個部份的定義,是最重要的思想,可以多思考。

Continue reading

18. 4Sum

Leetcode 幾個數字題,15、16、18,基本上套路都是一樣的(甚至可以預期可能還會出 5 Sum…),整體的解法都差不多,可以一起複習,重點仍然是 :

  1. 排序 array
  2. 避免的重複項

以 3Sum 此基礎上,再加了一個循環而已。

Continue reading

15. 3Sum

是 Two Sum 的一種另類進階,從 nums 中找出和為 0 的三個 element ,並組成 List of list 。特別注意,不能有兩個內容一樣的 list。因為整個題目並沒有對 numsindex 有任何要求,故可以把 nums 排序,為解題拓開另一種思路。

Continue reading

16. 3Sum Closest

這題跟 15 題相似,又增加了些許難度。題目敘述一樣也很簡單 : 求 nums 內最接近 target 值的三數和。優化關鍵點一樣是,把 nums 排序,這樣就可以確定指針滑動方向。

Continue reading

這道題要我們從有序數組中去除重複項,題目難度雖然被歸為 easy 等級,但在條件限制上的討論,蠻多東西可以釐清討論的。 英文方面寫得蠻長,記得要看到最後因為有寫一些限制如 :

  • O(1) extra memory
  • The relative order of the elements should be kept the same.

所以不能用 Set 或另開 array 去寫。另外也花了些篇幅去說明,只要原 array 前面長度部分內,有把所有不重複數字列出來就好,不需要在意後面 array 的元素和 array 的長度。

Continue reading

Author's picture

李昀陽 YunYang Lee

Welcome to my Tech Note. You can read some of the chapters below.

Software Engineer

Taiwan