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