Manacher’s Algorithm (Manacher 的唸法/ˈmænəkər/),用是來尋找字串中的最長回文子字串 (Longest Palindromic Substring)的最優解法,時間複雜度可優化到了 O(n)。 在了解此演算法之前,可以先熟悉「 Dynamic Programming - 2D matrix 」和「 中心擴散法 (Expand Around Center) 」這些 O(n^2) 的解法,在解題途中有蠻多直得注意的技巧和知識點可以學習,由於算是是常考題,就花些時間了解一下吧。

Continue reading

18. 4Sum

Leetcode 幾個數字題 151618,基本上套路都是一樣的,可以一起複習,重點仍然是 :

  1. 排序 array
  2. 避免紀錄重複項

由於可以預期 還會出 5 Sum… 之類的,本題主要是引出「來想一種 KSum 的解法」,通用任意的數位。

Continue reading

15. 3Sum

是 Two Sum 的一種另類進階,要從 nums 中找出和為 0 的三個 element ,由於答案可能有多種,故答案會是個 List of list 。特別注意,題目中有提到不能有兩個內容一樣的 list,故要做去重處理。 也因為題目解答並沒有對 numsindex 有任何要求,故可以把 nums 排序,為解題拓開另一種思路。

Continue reading

16. 3Sum Closest

第 16 題跟 15 題相似,又增加了些許難度。題目敘述一樣也很簡單 : 求 nums 內最接近 target 值的三數和。因為是求最接近 target 值的三數和,而解答也沒有要關注其 index,故還是可以考慮將 nums 排序,這樣就可以確定指針滑動方向。

Continue reading

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

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

所以不能用 Set 或另開 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