LeetCode題解匯總(包括劍指Offer和程序員面試金典,持續更新))
劍指Offer
數據結構
鏈表
序號 | 題目 | 難度 |
---|---|---|
06 | 從尾到頭打印鏈表 | 簡單 |
18 | 刪除鏈表的節點 | 簡單 |
22 | 鏈表中倒數第k個節點 | 簡單 |
24 | 反轉鏈表 | 簡單 |
25 | 合並兩個排序的鏈表 | 簡單 |
35 | 復雜鏈表的復制 | 中等 |
52 | 兩個鏈表的第一個公共節點 | 簡單 |
二叉樹
序號 | 題目 | 難度 |
---|---|---|
07 | 重建二叉樹 | 中等 |
26 | 樹的子結構 | 中等 |
27 | 二叉樹的鏡像 | 簡單 |
28 | 對稱的二叉樹 | 簡單 |
32 - I | 從上到下打印二叉樹 | 中等 |
32 - II | 從上到下打印二叉樹 II | 簡單 |
32 - III | 從上到下打印二叉樹 III | 中等 |
33 | 二叉搜索樹的后序遍歷序列 | 中等 |
34 | 二叉樹中和為某一值的路徑 | 中等 |
36 | 二叉搜索樹與雙向鏈表 | 中等 |
37 | 序列化二叉樹 | 困難 |
54 | 二叉搜索樹的第k大節點 | 簡單 |
55 - I | 二叉樹的深度 | 簡單 |
55 - II | 平衡二叉樹 | 簡單 |
68 - I | 二叉搜索樹的最近公共祖先 | 簡單 |
68 - II | 二叉樹的最近公共祖先 | 簡單 |
棧和隊列
序號 | 題目 | 難度 |
---|---|---|
09 | 用兩個棧實現隊列 | 簡單 |
30 | 包含min函數的棧 | 簡單 |
31 | 棧的壓入、彈出序列 | 中等 |
58 - I | 翻轉單詞順序 | 簡單 |
59 - I | 滑動窗口的最大值 | 簡單 |
59 - II | 隊列的最大值 | 中等 |
堆
序號 | 題目 | 難度 |
---|---|---|
40 | 最小的k個數 | 簡單 |
41 | 數據流中的中位數 | 困難 |
字符串
序號 | 題目 | 難度 |
---|---|---|
19 | 正則表達式匹配 | 困難 |
20 | 表示數值的字符串 | 中等 |
58 - II | 左旋轉字符串 | 簡單 |
67 | 把字符串轉換成整數 | 中等 |
哈希表
序號 | 題目 | 難度 |
---|---|---|
50 | 第一個只出現一次的字符 | 簡單 |
56 - II | 數組中數字出現的次數 II | 中等 |
57 | 和為s的兩個數字 | 簡單 |
位運算
序號 | 題目 | 難度 |
---|---|---|
15 | 二進制中1的個數 | 簡單 |
56 - I | 數組中數字出現的次數 | 中等 |
64 | 求1+2+…+n | 中等 |
65 | 不用加減乘除做加法 | 簡單 |
圖
序號 | 題目 | 難度 |
---|---|---|
12 | 矩陣中的路徑 | 中等 |
13 | 機器人的運動范圍 | 中等 |
算法
動態規划
序號 | 題目 | 難度 |
---|---|---|
10- I | 斐波那契數列 | 簡單 |
10- II | 青蛙跳台階問題 | 簡單 |
14- I | 剪繩子 | 中等 |
14- II | 剪繩子 II | 中等 |
39 | 數組中出現次數超過一半的數字 | 簡單 |
42 | 連續子數組的最大和 | 簡單 |
46 | 把數字翻譯成字符串 | 中等 |
47 | 禮物的最大價值 | 中等 |
60 | n個骰子的點數 | 簡單 |
63 | 股票的最大利潤 | 中等 |
貪心
序號 | 題目 | 難度 |
---|---|---|
45 | 跳躍游戲 II | 中等 |
查找
序號 | 題目 | 難度 |
---|---|---|
04 | 二維數組中的查找 | 簡單 |
53 - I | 在排序數組中查找數字 I | 簡單 |
53 - II | 0~n-1中缺失的數字 | 簡單 |
排序
序號 | 題目 | 難度 |
---|---|---|
45 | 把數組排成最小的數 | 中等 |
雙指針
序號 | 題目 | 難度 |
---|---|---|
21 | 調整數組順序使奇數位於偶數前面 | 簡單 |
48 | 最長不含重復字符的子字符串 | 中等 |
57 - II | 和為s的連續正數序列 | 簡單 |
回溯
序號 | 題目 | 難度 |
---|---|---|
38 | 字符串的排列 | 中等 |
數學
序號 | 題目 | 難度 |
---|---|---|
17 | 打印從1到最大的n位數 | 簡單 |
43 | 1~n整數中1出現的次數 | 中等 |
44 | 數字序列中某一位的數字 | 中等 |
49 | 丑數 | 中等 |
61 | 撲克牌中的順子 | 簡單 |
62 | 圓圈中最后剩下的數字 | 簡單 |
其它
序號 | 題目 | 難度 |
---|---|---|
03 | 數組中重復的數字 | 簡單 |
05 | 替換空格 | 簡單 |
11 | 旋轉數組的最小數字 | 簡單 |
16 | 數值的整數次方 | 中等 |
29 | 順時針打印矩陣 | 簡單 |
51 | 數組中的逆序對 | 困難 |
66 | 構建乘積數組 | 簡單 |
程序員面試金典
數據結構
字符串
序號 | 題目 | 難度 |
---|---|---|
01.01 | 判定字符是否唯一 | 簡單 |
01.02 | 判定是否互為字符重排 | 簡單 |
01.03 | URL化 | 簡單 |
01.04 | 回文排列 | 簡單 |
01.05 | 一次編輯 | 中等 |
01.06 | 字符串壓縮 | 簡單 |
01.09 | 字符串輪轉 | 簡單 |
鏈表
序號 | 題目 | 難度 |
---|---|---|
02.03 | 刪除中間節點 | 簡單 |
02.04 | 分割鏈表 | 中等 |
02.05 | 鏈表求和 | 中等 |
02.06 | 回文鏈表 | 簡單 |
02.07 | 鏈表相交 | 簡單 |
02.08 | 環路檢測 | 中等 |
數組
序號 | 題目 | 難度 |
---|---|---|
01.08 | 零矩陣 | 中等 |
08.03 | 魔術索引 | 簡單 |
17.04 | 消失的數字 | 簡單 |
17.10 | 主要元素 | 簡單 |
棧
序號 | 題目 | 難度 |
---|---|---|
03.01 | 三合一 | 簡單 |
03.02 | 棧的最小值 | 簡單 |
03.03 | 堆盤子 | 中等 |
03.04 | 化棧為隊 | 簡單 |
03.05 | 棧排序 | 中等 |
樹
序號 | 題目 | 難度 |
---|---|---|
04.02 | 最小高度樹 | 簡單 |
04.08 | 首個共同祖先 | 中等 |
哈希表
序號 | 題目 | 難度 |
---|---|---|
02.01 | 移除重復節點 | 簡單 |
其它
序號 | 題目 | 難度 |
---|---|---|
01.07 | 旋轉矩陣 | 中等 |
算法
排序
序號 | 題目 | 難度 |
---|---|---|
10.01 | 合並排序的數組 | 簡單 |
雙指針
序號 | 題目 | 難度 |
---|---|---|
02.02 | 返回倒數第 k 個節點 | 簡單 |
動態規划
序號 | 題目 | 難度 |
---|---|---|
08.01 | 三步問題 | 簡單 |
08.11 | 硬幣 | 中等 |
16.17 | 連續數列 | 簡單 |
17.16 | 按摩師 | 簡單 |
LeetCode
數據結構
鏈表
序號 | 題目 | 難度 |
---|---|---|
21 | 合並兩個有序鏈表 | 簡單 |
23 | 合並K個排序鏈表 | 困難 |
138 | 復制帶隨機指針的鏈表 | 中等 |
160 | 相交鏈表 | 簡單 |
206 | 反轉鏈表 | 簡單 |
445 | 兩數相加 II | 中等 |
876 | 鏈表的中間結點 | 簡單 |
二叉樹
序號 | 題目 | 難度 |
---|---|---|
101 | 對稱二叉樹 | 簡單 |
104 | 二叉樹的最大深度 | 簡單 |
105 | 從前序與中序遍歷序列構造二叉樹 | 中等 |
110 | 平衡二叉樹 | 簡單 |
113 | 路徑總和 II | 中等 |
199 | 二叉樹的右視圖 | 中等 |
226 | 翻轉二叉樹 | 簡單 |
235 | 二叉搜索樹的最近公共祖先 | 簡單 |
236 | 二叉樹的最近公共祖先 | 中等 |
297 | 二叉樹的序列化與反序列化 | 困難 |
572 | 另一個樹的子樹 | 簡單 |
棧和隊列
序號 | 題目 | 難度 |
---|---|---|
151 | 翻轉字符串里的單詞 | 中等 |
155 | 最小棧 | 簡單 |
239 | 滑動窗口最大值 | 困難 |
946 | 驗證棧序列 | 中等 |
哈希表
序號 | 題目 | 難度 |
---|---|---|
3 | 無重復字符的最長子串 | 中等 |
202 | 快樂數 | 簡單 |
1060 | 拼寫單詞 | 簡單 |
圖
序號 | 題目 | 難度 |
---|---|---|
200 | 島嶼數量 | 中等 |
位運算
序號 | 題目 | 難度 |
---|---|---|
191 | 位1的個數 | 簡單 |
260 | 只出現一次的數字 III | 中等 |
其它
序號 | 題目 | 難度 |
---|---|---|
48 | 旋轉圖像 | 中等 |
59 | 螺旋矩陣 | 簡單 |
1413 | 擁有最多糖果的孩子 | 簡單 |
算法
動態規划
序號 | 題目 | 難度 |
---|---|---|
53 | 最大子序和 | 簡單 |
509 | 斐波那契數 | 簡單 |
983 | 最低票價 | 中等 |
貪心
序號 | 題目 | 難度 |
---|---|---|
55 | 跳躍游戲 | 中等 |
二分查找
序號 | 題目 | 難度 |
---|---|---|
33 | 搜索旋轉排序數組 | 中等 |
34 | 在排序數組中查找元素的第一個和最后一個位置 | 中等 |
回溯
序號 | 題目 | 難度 |
---|---|---|
46 | 全排列 | 中等 |
數學
序號 | 題目 | 難度 |
---|---|---|
233 | 數字 1 的個數 | 困難 |
365 | 水壺問題 | 中等 |
914 | 卡牌分組 | 簡單 |
雙指針
序號 | 題目 | 難度 |
---|---|---|
3 | 無重復字符的最長子串 | 中等 |
680 | 驗證回文字符串 Ⅱ | 簡單 |
其它
序號 | 題目 | 難度 |
---|---|---|
50 | Pow(x, n) | 中等 |
56 | 合並區間 | 中等 |
79 | 單詞搜索 | 中等 |
169 | 多數元素 | 簡單 |
240 | 搜索二維矩陣 II | 中等 |
836 | 矩形重疊 | 簡單 |
945 | 使數組唯一的最小增量 | 中等 |
999 | 車的可用捕獲量 | 簡單 |
1013 | 將數組分成和相等的三個部分 | 簡單 |
1071 | 字符串的最大公因子 | 簡單 |
1218 | 統計「優美子數組」 | 中等 |
1371 | 每個元音包含偶數次的最長子字符串 | 中等 |