每天总结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题的思路,一层一层做