90. Subsets II

是經典的 78. Subsets 的進階版,現在數字會有重複(duplicate)。這邊使用 Backtrack 模板來求解。這個題目還有要注意的地方,就是 array 不一定是順序的,例如 test case: [4,4,4,1,4],這範例在我們去除重複答案的時候,若沒注意到有亂序的可能性,高機率會出錯。

Continue reading

78. Subsets

很經典的問題 : 冪集 the power set ,在數學上還蠻常見到的,理論上求得解答方式也很簡單,選或者不選排列組合,就可以得出答案。但在程式上要實現卻有一點點難度,故會被歸類到 Medium 等級。這邊使用 Backtrack 模板來解題。

Continue reading

40. Combination Sum II

這題是 39. Combination Sum 的進階,給定一個 array 和 target ,找出 candidates 中所有可以使數字和為 target 的組合,但 candidates 中的每個數字,在每個組合中只能使用一次。對比 39. 中的數字是可以重複使用,這題是不能重複使用的,但兩題本質沒有區別,依然是使用 DFS 和 backtrack 思想求解。寫到現在其實已經有感覺到一定的模板了,但多多比較與其他 backtrack 題型的差異才是最重要的。

Continue reading

39. Combination Sum

這題給了一個 array of distinct integer 以及目標總和 target , 求用此 array 來組成目標數字的所有組合。像這種要求返回所有符合要求解的題目,基本都是要利用到遞迴,類似的題目有 Subset 、 Permutation 、 Combination 等等,解題套路都是使用 DFS 和 Backtrack 來求得答案。

Continue reading

Permutations 另解

之前解題利用了交換 nums 裡面的兩個數字的方式,這次換另一種寫法,做出一個 inner list 收集可能的結果。基本解題思想都還是 Backtracking ,故把 leetcode46 和 leetcode47 重新解答一遍。

Continue reading

47. Permutations II

是經典的 46. Permutations 的進階版,現在數字會有重複(duplicate) 。這邊一樣使用 Backtrack 來求解。從數學上來說,n 個 element ,且將相同的事物歸為一組, 可歸成 k 組, 且每組有 m_i 個,其 Permutation 一共有 n!/(m_1!m_2!...m_k!) 種排序,為高中數學題中,需要思考下的題目;用程式模擬這個過程也有難度,故被歸類在 Medium 等級。

Continue reading

46. Permutations

是一道經典 distinct integers 的全排列問題,這邊使用 Backtrack 來求解。從數學上來說,n 個 element 的 Permutation 一共有 n! 種排序,思考起來算蠻簡單的,但要用程式模擬這個推導過程,卻是有點難度的,因此被歸類在 Medium 等級。

Continue reading

這題是要求 Binary Tree 的 diameter ,要注意一下 diameter 的定義並不等於深度 ! 根據題目中的例子,可了解所謂 diameter 的定義,是兩點之間的最遠距離。雖然 Binary Tree 的 diameter 並不等於深度,但是和深度有非常大的關係,所以解法用 DFS 是比較直觀的想法。(雖然題目難度說是 easy,但我個人覺得應該算初階 medium…)

Continue reading

79. Word Search

題目給定一個 board 以及 一個 word ,我們要判斷的 board 上是否可以連線出 word。這題是蠻典型的 graph 類題目,用 BFS 或 DFS 解題都行,但用深度優先 DFS 來解題會比較好一些(可以先思考一下為什麼)。解題流程還蠻制式化的,是熟練 graph 類型的練習好題目 XD。

Continue reading

這種飛航問題基本上都是屬於 Graph 題,題目敘述也很生活化(根本旅行必備知識)。 因為所有的路徑有且只會被用一次,故是一個 Euler Circuit

進一步抽象,可說這題是屬於 Post-order traversal on Edges 問題。 從入口做 post-order ,會是出口先被紀錄,然後再往回 backtracking 回入口,把路上的所有 node 都記下來。 老實說技巧性有點太強,且還是高頻…。 另外注意英文閱讀,有些單字很重要例如 lexical order,沒注意到可能會出現錯誤。

Continue reading

Author's picture

李昀陽 YunYang Lee

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

Software Engineer

Taiwan