鏈表
快慢指針
指針分別指向pre田弥,cur和next進(jìn)行鏈表的截斷,翻轉(zhuǎn)等
在鏈表前加個hair指針陌兑,指向head沈跨,有時更好操作。
141. 環(huán)形鏈表
142. 環(huán)形鏈表 II
202. 快樂數(shù)
206. 反轉(zhuǎn)鏈表
92. 反轉(zhuǎn)鏈表 II
25. K 個一組翻轉(zhuǎn)鏈表
61. 旋轉(zhuǎn)鏈表
19. 刪除鏈表的倒數(shù)第 N 個結(jié)點
83. 刪除排序鏈表中的重復(fù)元素
82. 刪除排序鏈表中的重復(fù)元素 II
86. 分隔鏈表
138. 復(fù)制帶隨機(jī)指針的鏈表
隊列
622. 設(shè)計循環(huán)隊列
641. 設(shè)計循環(huán)雙端隊列
933. 最近的請求次數(shù)
859. 親密字符串
面試題 17.09. 第 k 個數(shù)
969. 煎餅排序
621. 任務(wù)調(diào)度器
棧
遇見有包含關(guān)系時的問題兔综,一個值得考慮的數(shù)據(jù)結(jié)構(gòu)
20. 有效的括號
227. 基本計算器 II
331. 驗證二叉樹的前序序列化
636. 函數(shù)的獨占時間
844. 比較含退格的字符串
946. 驗證棧序列
1021. 刪除最外層的括號
1124. 表現(xiàn)良好的最長時間段
1249. 移除無效的括號
面試題 03.04. 化棧為隊
772. 基本計算器 III
二叉樹
前序遍歷谒出、中序遍歷、后序遍歷邻奠、層序遍歷
144. 二叉樹的前序遍歷
94. 二叉樹的中序遍歷
145. 二叉樹的后序遍歷
589. N 叉樹的前序遍歷
226. 翻轉(zhuǎn)二叉樹
102. 二叉樹的層序遍歷
107. 二叉樹的層序遍歷 II
103. 二叉樹的鋸齒形層序遍歷
110. 平衡二叉樹
112. 路徑總和
105. 從前序與中序遍歷序列構(gòu)造二叉樹
222. 完全二叉樹的節(jié)點個數(shù)
劍指 Offer 54. 二叉搜索樹的第k大節(jié)點
劍指 Offer 26. 樹的子結(jié)構(gòu)
662. 二叉樹最大寬度
968. 監(jiān)控二叉樹
堆與優(yōu)先隊列
劍指 Offer 40. 最小的k個數(shù)
1046. 最后一塊石頭的重量
1753. 移除石子的最大得分
703. 數(shù)據(jù)流中的第 K 大元素
215. 數(shù)組中的第K個最大元素
264. 丑數(shù) II
313. 超級丑數(shù)
面試題 17.20. 連續(xù)中值
295. 數(shù)據(jù)流的中位數(shù)
692. 前K個高頻單詞
373. 查找和最小的 K 對數(shù)字
1801. 積壓訂單中的訂單總數(shù)
355. 設(shè)計推特
前綴和
303. 區(qū)域和檢索 - 數(shù)組不可變
304. 二維區(qū)域和檢索 - 矩陣不可變
560. 和為 K 的子數(shù)組
差分?jǐn)?shù)組
滑動窗口
76. 最小覆蓋子串
567. 字符串的排列
438. 找到字符串中所有字母異位詞
3. 無重復(fù)字符的最長子串
回溯算法
類似于暴力求解笤喳,嘗試種種可能的選擇獲得符合條件的結(jié)果。
核心是在遞歸調(diào)用之前做選擇碌宴,在遞歸調(diào)用之后撤銷選擇杀狡。
快速創(chuàng)建一個二維數(shù)組:
Array.from(new Array(n),()=>new Array(n).fill('.'))
46. 全排列
51. N 皇后
698. 劃分為k個相等的子集
動態(tài)規(guī)劃
動態(tài)規(guī)劃問題的一般形式就是求最值,存在重疊子問題贰镣,可以通過之前的狀態(tài)推出當(dāng)前的狀態(tài)呜象,避免不必要的計算。
動態(tài)規(guī)劃的核心就是找到狀態(tài)轉(zhuǎn)移方程碑隆。