每天總結hard20題,三段總解法:1. 找個比較規范的答案,2.把每一行的思路寫下來,3.刪掉答案重寫一遍。不過因為時間有限,所以先打算做前兩段。
4. Median of Two Sorted Arrays: 二分法,每次扔掉k/2的數,要考慮怎么扔
10. Regular Expression Matching: 有點難做的一道題,分成star和非start兩種情況考慮。
23. Merge k Sorted Lists: 用heap很好做
25. Reverse Nodes in k-Group:也不算難,只要把reverse那個function寫好,返回比較合適的值,其它的一點一點扣就行了
30. Substring with Concatenation of All Words: 比較難的一道前向型指針問題,首先要確定最左邊的一個點,因為所有字典里的詞的長度都一樣,所以左邊的起始點就是循環一個詞的長度。這題可以說是前向型指針的終極應用了,可以再做一遍。
32. Longest Valid Parentheses: 這題解法很nb,感覺不是那么輕易能直接想到,但是一旦想到了,卻又很簡單。基本想法就是記錄很多信息,最后loop一遍找出最大差值。
37. Sudoku Solver: 在dfs的時候要注意一下下一層dfs的值是什么
41. First Missing Positive: 其實就是多加了一步,把所有的負數先映射為0,然后再去做inplace mapping
42. Trapping Rain Water: 思路非常簡單,不知為啥歸結為難題,只是在寫法上稍微注意就可以了
44. Wildcard Matching: 也是一道比較難受的題目,和上面的10一樣思考起來比較麻煩
45. Jump Game II: 用greedy的解法比較簡單
51. N-Queens: backtracking的一道題
52. N-Queens II: 和上一題一模一樣。。。
57. Insert Interval: 規規矩矩按部就班的做,然后注意corner case的處理
65. Valid Number: 利用狀態轉移的方法,挺神奇的一道題
68. Text Justification: 思路比較直白,corner case比較多
72. Edit Distance: 比較簡單的dp,如果用滾動數組要稍微麻煩一些
76. Minimum Window Substring: 比較直白的前向型指針問題
84. Largest Rectangle in Histogram: 利用stack,還算是熟悉吧
85. Maximal Rectangle: 完全是利用84題的思路,一層一層做