課程1: 前向型指針和heap的應用
Kth Smallest Number in Sorted Matrix:用heap做比較直接,不過這題還可以用二分法來做。按值二分,最小值為[0,0],最大值為[m-1,n-1],二分法的時候,找到處每一行小于mid的值的個數,也就是找出index,然后看看是大于還是小于k,最后返回值是low,算是一種比較有意思的解法
Minimum Size Subarray Sum: 找最短區(qū)間使其和大于某個值,典型的前向型指針,也就是先前進j,然后縮短i
Longest Substring Without Repeating Characters: 典型的前向型指針問題,用hash來保存訪問過的char
Longest Substring with At Most K Distinct Characters: 前向型指針問題,用hashmap來保存每個字符出現的次數,利用hash的大小來決定是否前進j
Kth Smallest Sum In Two Sorted Arrays: 經典的二分法的題目,就是不停得扔一半扔一半就好了
Kth Largest in N Arrays:先排序,然后把值都放到heap里
Two Sum - Less than or equal to target: 對向型指針,利用range來計數
Kth Smallest Numbers in Unsorted Array: quick select的題目
Triangle Count: 固定一個值(作為最長邊),然后對向型指針找另兩個值
Minimum Window Substring: 稍微麻煩點的前向型指針問題,不過套路都一樣,用兩個hash記錄target和當前window里的所有字符,并且用一個count來記錄當前已經添加的有效字符個數,當count小于target的長度是延長j
課程2: 并查集和Trie樹
Number of Islands: 基本的并查集的應用
Connecting Graph:還是簡單的并查集
Connecting Graph II: 并查集,加上一個hash來記錄每一個boss的大小
Connecting Graph III: 并查集,用一個count來記錄個數,每union一次count - 1
Graph Valid Tree: 兩個條件,一是所有邊的兩個點在union之前沒有同一個father(否則就有環(huán)了),二是所有的點最終都只有一個boss
Add and Search Word:用Trie,只是在search 的時候要用一個遞歸來出“.”的情況
Implement Trie: Trie的基本
Find the Weak Connected Component in the Directed Graph: 并查集,要注意一下union的時候點的方向
Connected Component in Undirected Graph: 和上一題是一樣的
Word Search: DFS的題
Number of Islands II:并查集,每添加一個島嶼的時候,要對其上下左右進行判斷是否要union
Word Search II:因為有多個單詞,用Trie,不過直接loop好像也能過
Surrounded Regions: DFS/BFS/并查集都可以做
Boggle Game:
Word Squares:用Trie來實現找prefix,每加入一個單詞,就可以直到下一行的prefix是什么,然后找出所有prefix符合的,嘗試著加入(dfs過程)
Interval Sum II: 比較典型的segment tree的問題,覺得面試的時候要問segment tree的題目的話,真是要花好大精力去寫
Count of Smaller Number before itself: 這題可以用segment tree來做,但是我打算用mergesort的想法來做一下,感覺更加直觀一些,在merge那一步搞點事情,能寫,不過寫起來有點費勁