10.28 - 九章高級算法班題目大總結(1,2課)

課程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那一步搞點事情,能寫,不過寫起來有點費勁

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容