字串問題有個通用的滑動窗口算法,時間復雜度O(n2) 其中關鍵: 窗口大小不固定:構造合適的count來控制窗口的滑動。 窗口大小固定:使用left、right控制窗口移動。...
兩個指針的問題:通過2個指針同步或不同步的移動,得到結果。時間復雜度一般會降低一個數(shù)量級。 適用于排好序的情況 86. Partition List 解析: 使用x進行劃分,...
1. 位運算 2. 10進制進位,取余 3. 找規(guī)律題目 136. Single Number 利用取余操作的特性相同為0,不同為1??梢缘贸?,只出現(xiàn)一次的數(shù)字。 137. ...
56. Merge Intervals 融合數(shù)組的重復部分。1. 對數(shù)組進行排序。 2. 依次判斷結果數(shù)組中最后一個間隔的重疊情況。 147. Insertion Sort ...
查找的題目基本是二分查找,排序一般是快排或歸并 快排套路是left = 0, right = x.size() - 1; while(low <= high); high =...
套路很深,就是遍歷全部情況 定義解空間,包含全部解 利用深度優(yōu)先搜索解空間 Trial,減枝。(避免訪問不可能產生解的子空間) 而根據(jù)條件有選擇的遍歷,叫做剪枝或分枝定界。 ...
動態(tài)規(guī)劃: 每一步都進行選擇,依賴于子問題的解。通常使用自底向上求解,先求較小的子問題,然后是較大的子問題。 貪心: 每次找出局部最優(yōu)解。 122. Best Time to...
分治方法 將問題劃分成互不相交的子問題 遞歸地求解子問題 將子問題的解組合起來 動態(tài)規(guī)劃(兩個要素:最優(yōu)子結構、子問題重疊) 應用于子問題重疊的情況,對于每個子問題求解一次,...
Divide: 將問題劃分為一些子問題,子問題的形式和原問題一樣,只是規(guī)模更小。 Conquer:遞歸地求解出子問題。如果子問題的規(guī)模足夠小,則停止遞歸進行求解。 Combi...
樹相關題目套路: 先序中序后序DFS其他遍歷方式(如右左根)層序遍歷 144. Binary Tree Preorder Traversal 返回先序遍歷的結果。其中使用迭代...
鏈表題目是有套路的,如下4個方法: 鏈表逆序 (n個節(jié)點進行逆序,實際上循環(huán)進行n-1次)2個指針 (拆分、拼接、合并、求中點)鏈表成環(huán)使用額外空間保存 143. Reord...
41. First Missing Positive 找到第一個缺失的正整數(shù),每個正整數(shù)放在n-1的下標上。 73. Set Matrix Zeroes 將矩陣中出現(xiàn)0的行和...
主要應用的是Hash Table 要對每種基礎數(shù)據(jù)結構有深刻的理解。主要應對設計題: HashTable: 增、刪、查都是O(1),但是是無序的 vector: 增(尾部增O...
什么情況使用棧? 利用棧的后進先出性質。 輸入:數(shù)組,輸出:與數(shù)組下標和元素都相關。而且棧中構成一定的順序比如遞增、遞減,如果不滿足則出棧進行計算。 需要注意的情況 搞清楚什...