Backtrack

332. Reconstruct Itinerary

332. Reconstruct Itinerary 這個題目算是面試題中,我覺得少數比較合理的難題。 題目是給定一組包含整趟旅程的機票,然後每次都是從 "JFK"

1087. Brace Expansion

1087. Brace Expansion 這個題目比較特別一點,一般來說 backtracking 的題目需要窮舉的項目都很明確,這題比較特別的是需要多花一點時間去解析這個字串,光解析字串或許就可以當作一題了。 我解析的方法很簡單,

22. Generate Parentheses

22. Generate Parentheses 這一題和 46. Permutations 很類似,題目要求的就是要窮舉。 最好寫回溯法的題目通常都會符合人類的直覺,因為

47. Permutations II

47. Permutations II 有重複的數字出現,要去記錄使用的次數 class Solution: def permuteUnique(self,

46. Permutations

46. Permutations 排列組合,要確保已經使用過的數字不要再使用 class Solution: def permute(self, nums:

90. Subsets II

90. Subsets II 這個題目是 78. Subsets 的延伸,只是給定的陣列裡面會有重複的數值,會導致找到的子集合可能是重複的,這些都是我們要去除掉的,

78. Subsets

78. Subsets 我們需要一個長度來終結 backtrack ,所以多傳了一個參數 k 做為判斷 Backtrack 終止的條件。 class

216. Combination Sum III

216. Combination Sum III 這一題和 77. Combinations 與 39. Combination

40. Combination Sum II

40. Combination Sum II 這題是以下兩題的總和: 1. 像是 90. Subsets II

39. Combination Sum

39. Combination Sum 這個題目也是窮舉題目,我們每次都從最小的數字開始拿,慢慢的往上加,如果說最後沒辦法湊到結果,就把最後一個數字拿掉,再看看大一點的數字可不可以到目標。有一點像是換錢幣的題目。