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