這題使用深度優先 Depth First Traversal 來遍歷,並使用 Pre-Order 方式記錄樹的節點值;Deserialize 時有用到 queue 來儲存節點 value 值。 之前文章也分享過,在想要 Copy Tree 時適合使用Pre-Order。這題有點符合 Copy Tree 的情境,但是是把 value 存下來。


這題使用深度優先 Depth First Traversal 來遍歷,並使用 Pre-Order 方式記錄樹的節點值;Deserialize 時有用到 queue 來儲存節點 value 值。 之前文章也分享過,在想要 Copy Tree 時適合使用Pre-Order。這題有點符合 Copy Tree 的情境,但是是把 value 存下來。

可以抽象成,計算從初始節點到最遠節點的最優路徑,很標準的 best first search。 題目常用在水管滲透,或是網路流通,求出初始節點到每一個點到最短時間,然後取其中最大的一個就是需要的時間了。這題就是要你=實作 Dijkstra’s algorithm。

這種飛航問題基本上都是屬於 Graph 題,題目敘述也很生活化(
根本旅行必備知識)。 因為所有的路徑有且只會被用一次,故是一個 Euler Circuit。進一步抽象,可說這題是屬於 Post-order traversal on Edges 問題。 從入口做 post-order ,會是出口先被紀錄,然後再往回 backtracking 回入口,把路上的所有 node 都記下來。 老實說技巧性有點太強,且還是高頻…。 另外注意英文閱讀,有些單字很重要例如 lexical order,沒注意到可能會出現錯誤。

最長回文子串 (Longest Palindromic Substring) 算是一個常考題。Palindrome 的定義是順讀逆讀,字母都一樣的詞語,比如範例給的 「 bab 」、 「 bb 」 等等,實際單字如 「 level 」 也是一個的 Palindromic 單字。
先熟悉「 Dynamic Programming - 2D matrix 」解和「 中心擴散法 (Expand Around Center) 」就好了,還有聽過最佳解 Manacher’s Algorithm,時間複雜度可優化到了 O(n),之後再花其他篇幅去補充。

類似這種 top k 問題且非樹結構,都可以直接用 Heap 來解題。

這是一道關於二叉搜索樹 Binary Search Tree 的題目。提示是讓我們用中序遍歷In-Order來解題。 可以複習一下 DFS 解法的 Pre-Order、In-Order Post-Order。 另外這道題的 Follow up 可以多思考,是假設該 BST 被修改的很頻繁,而且查找第 k 小元素的操作也很頻繁,問如何優化。

剛開始刷題時就覺得這題很有趣,有 game 的感覺。可以用來複習DFS、BFS。


不定時練習LeetCode紀錄…

