2019年3月31日 星期日
2019年3月26日 星期二
[leetcode][python]40. Combination Sum II
這題的目標是要從提供的組合內(內容可能重複) 選出加總為target 的組合
但選出的組合又要求不能重複
因此用DP 的方式做:
2019年3月14日 星期四
2019年3月13日 星期三
[leetcode][python]32. Longest Valid Parentheses
這題一開始想用記數去做,
從串列每一個元素當開始,往後一個一個元素加進去
這樣做出來結果正確,但是時間複雜度太高,會跑到timeout
從串列每一個元素當開始,往後一個一個元素加進去
- 看到'('就+1,看到')' 就-1
- 若計到0就代表是一串合法的組合
- 若>0 則代表這串中間有合法的組合(一到多組),開頭往後一個元素
- 若計到-1代表這串不合法,因此這串不用再檢查,下一個run檢查的開頭就跳到這串之後
這樣做出來結果正確,但是時間複雜度太高,會跑到timeout
2019年3月10日 星期日
[leetcode][python][c]31. Next Permutation
這題雖然難度是中等,但想了好久才想到規則,因此紀錄一下
舉一個例子
[1,2,3] 的所有排列組合順序:
舉一個例子
[1,2,3] 的所有排列組合順序:
- 1,2,3
- 1,3,2
- 2,1,3
- 2,3,1
- 3,1,2
- 3,2,1 <=下一個又跳回第一組從小到大的組合
2019年3月8日 星期五
[leetcode][c]25. Reverse Nodes in k-Group
大致想法是這樣:
[framePrev]->[frame: k nodes]->[frameNext]
然後allocate stack(k 個pointer), 用來存放一個k個node 的指標
將此frame 反轉後,再將frame 往後移
[framePrev]->[frame: k nodes]->[frameNext]
然後allocate stack(k 個pointer), 用來存放一個k個node 的指標
將此frame 反轉後,再將frame 往後移
[leetcode][python]21. Merge Two Sorted Lists
沒有重新allocate memory, 只是單純修改指標
source code:
https://github.com/cy-arduino/leetcode/blob/master/21.%20Merge%20Two%20Sorted%20Lists.py
2019年3月3日 星期日
[leetcode][python]17. Letter Combinations of a Phone Number
這題做法很簡單,
使用遞迴的方式,將目前所有的組合上加上下一個數字可能產生的所有字元
舉例來說
使用遞迴的方式,將目前所有的組合上加上下一個數字可能產生的所有字元
舉例來說
[leetcode][python][c] 15. 3Sum
這題主要有兩個需要注意的部分:
- 降低尋找所有組合的複雜度
- 暴力法: (n-2)*(n-2)*(n-2) = O(n^3)
- 我的作法: O(n^2)
- 避免重複的答案(因為輸入的測試資料可能包含重複的數字
我的作法是:
訂閱:
文章 (Atom)