皮棉代碼
截至2016年8月22日,LintCode Online Judge上有289問題。最近問題的數量正在增加。這是所有289問題的分類。更多問題和解決方案,可以查看我的 LeetCode-Solutions 儲存庫。我將不斷更新完整的摘要和更好的解決方案。請繼續關注更新。
演算法
- 位元操作
- 大批
- 細繩
- 鍊錶
- 數學
- 樹
- 堆疊
- 佇列
- 堆疊
- 哈希表
- 資料結構
- 種類
- 遞迴
- 二分查找
- 廣度優先搜尋
- 深度優先搜尋
- 回溯
- 二元搜尋樹
- 動態規劃
- 貪婪的
- 物件導向設計
- 系統設計
位元操作
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 1 | A+B問題 | C++ | 複雜度(1) | 複雜度(1) | 中等的 | | |
| 82 | 單號 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 83 | 單號II | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 84 | 單號III | C++ | 在) | 複雜度(1) | 中等的 | CTCI | |
| 142 | O(1) 檢查 2 的冪 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | | |
| 179 | 更新位 | C++ | 複雜度(1) | 複雜度(1) | 中等的 | CTCI | |
| 181 | 翻轉位 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | CTCI | |
| 196 | 找到遺失的號碼 | C++ | 在) | 複雜度(1) | 中等的 | | |
| 365 | 二進制數 1 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | CTCI | |
大批
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 6 | 合併排序數組 | C++ | O(m+n) | 複雜度(1) | 簡單的 | Leet程式碼 | 兩個指針 |
| 8 | 旋轉字串 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 9 | 嘶嘶聲 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 30 | 插入間隔 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | |
| 31 | 分區數組 | C++ | 在) | 複雜度(1) | 中等的 | | 兩個指針 |
| 32 | 最小視窗子字串 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 38 | 搜尋二維矩陣 II | C++ | O(m+n) | 複雜度(1) | 中等的 | EPI | |
| 39 | 恢復旋轉排序數組 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 46 | 多數數 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 47 | 多數 II | C++ | 在) | 複雜度(1) | 中等的 | EPI | |
| 48 | 多數數 III | C++ | 在) | 好的) | 中等的 | EPI | |
| 49 | 按大小寫對字母排序 | C++ | 在) | 複雜度(1) | 中等的 | | 兩個指針 |
| 50 | 數組排除自身的乘積 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 51 | 先前的排列 | C++ | 在) | 複雜度(1) | 中等的 | | |
| 52 | 下一個排列 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 57 | 3 總和 | C++ | O(n^2) | 複雜度(1) | 中等的 | Leet程式碼 | 兩個指針,排序 |
| 58 | 4 總和 | C++ | O(n^3) | 複雜度(1) | 中等的 | Leet程式碼 | 哈希值 |
| 59 | 3 最接近的總和 | C++ | O(n^2) | 複雜度(1) | 中等的 | Leet程式碼 | 兩個指針,排序 |
| 64 | 合併排序數組 II | C++ | O(m+n) | 複雜度(1) | 簡單的 | Leet程式碼 | 兩個指針 |
| 100 | 從排序數組中刪除重複項 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | 兩個指針 |
| 101 | 從排序數組中刪除重複項 II | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | 兩個指針 |
| 133 | 最長的單字 | C++ | 在) | 在) | 簡單的 | | |
| 144 | 交錯正數和負數 | C++ | 在) | 複雜度(1) | 中等的 | | 兩個指針 |
| 161 | 旋轉影像 | C++ | O(n^2) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 162 | 設定矩陣零點 | C++ | O(m * n) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 172 | 刪除元素 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | 兩個指針 |
| 185 | 矩陣之字形遍歷 | C++ | O(m * n) | 複雜度(1) | 簡單的 | | |
| 189 | 第一個缺失的陽性 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | 哈希值 |
| 190 | 下一個排列 II | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 200 | 最長回文子字串 | C++ | 在) | 在) | 中等的 | Leet程式碼 | Manacher's Algorithm |
| 第363章 | 收集雨水 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | 兩個指針,棘手 |
| 第373章 | 依奇數和偶數分區數組 | C++ | 在) | 複雜度(1) | 簡單的 | | 兩個指針 |
| 第374章 | 螺旋矩陣 | C++ | O(m * n) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第381章 | 螺旋矩陣 II | C++ | O(n^2) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第382章 | 三角形計數 | C++ | O(n^2) | 複雜度(1) | 中等的 | | 兩個指針 |
| 第383章 | 裝最多水的容器 | C++ | 在) | 複雜度(1) | 中等的 | LeetCode、EPI | 兩個指針 |
| 第388章 | 排列序列 | C++ | O(n^2) | 在) | 中等的 | Leet程式碼 | |
| 第389章 | 有效數獨 | C++ | O(9^2) | 奧(9) | 簡單的 | Leet程式碼 | |
| 404 | 子數組和 II | C++ | O(nlogn) | 在) | 難的 | | 兩個指針,二分查找 |
| 405 | 子矩陣和 | C++ | O(m * n^2) | 氧(米) | 難的 | | 哈希值 |
| 406 | 最小子數組總和 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | 兩個指針,二分查找 |
| 第539章 | 移動零 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | 兩個指針 |
細繩
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 13 | strStr | C++ | O(n+k) | 好的) | 簡單的 | Leet程式碼 | KMP Algorithm |
| 53 | 反轉字串中的單字 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | |
| 54 | 字串轉整數(atoi) | C++ | 在) | 複雜度(1) | 難的 | Leet程式碼 | |
| 55 | 比較字串 | C++ | 在) | O(c) | 簡單的 | | |
| 78 | 最長公共前綴 | C++ | 在) | 複雜度(1) | 中等的 | | |
| 157 | 獨特的角色 | C++ | 在) | 複雜度(1) | 簡單的 | CTCI | |
| 158 | 兩個字串是字謎詞 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 171 | 字謎詞 | C++ | O(n * klogk) | 氧(米) | 簡單的 | LeetCode、EPI | |
| 212 | 空間置換 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 407 | 加一 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 第408章 | 新增二進位 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 第415章 | 有效回文 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 第417章 | 有效號碼 | C++ | 在) | 複雜度(1) | 難的 | Leet程式碼 | 自動機 |
| 第420章 | 數數並說 | C++ | O(n * 2^n) | O(2^n) | 簡單的 | Leet程式碼 | |
| 第422章 | 最後一個字的長度 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 第524章 | 左墊 | C++ | O(p+n) | 複雜度(1) | 簡單的 | Leet程式碼 | |
鍊錶
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 16 | 合併兩個排序列表 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | |
| 35 | 反向鍊錶 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | |
| 36 | 反向鍊錶二 | C++ | 在) | 複雜度(1) | 中等的 | LeetCode、EPI | |
| 96 | 分區列表 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 98 | 排序列表 | C++ | O(nlogn) | O(logn) | 中等的 | LeetCode、EPI | |
| 99 | 重新排序列表 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 102 | 鍊錶循環 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 103 | 鍊錶循環II | C++ | 在) | 複雜度(1) | 難的 | Leet程式碼 | |
| 104 | 合併 k 個排序列表 | C++ | O(n * logk) | 複雜度(1) | 中等的 | Leet程式碼 | 堆、分而治之 |
| 105 | 使用隨機指標複製列表 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 106 | 將排序列表轉換為二元搜尋樹 | C++ | 在) | O(logn) | 中等的 | LeetCode、EPI | |
| 112 | 從排序清單中刪除重複項 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | |
| 113 | 從排序清單中刪除重複項 II | C++ | 在) | 複雜度(1) | 中等的 | LeetCode、EPI | |
| 166 | 列表中倒數第 N 個節點 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 167 | 兩個列表總和 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 170 | 旋轉列表 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 173 | 插入排序列表 | C++ | O(n^2) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 174 | 從清單末尾刪除第 N 個節點 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 223 | 回文鍊錶 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第372章 | 刪除單鍊錶中間的節點 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | CTCI | |
| 380 | 兩個鍊錶的交集 | C++ | O(m+n) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 450 | k 組中的反向節點 | C++ | 在) | 複雜度(1) | 難的 | Leet程式碼 | |
| 第451章 | 成對交換節點 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 第452章 | 刪除連結列表元素 | C++ | 在) | 複雜度(1) | 幼稚的 | Leet程式碼 | |
| 511 | 交換鍊錶中的兩個節點 | C++ | 在) | 複雜度(1) | 中等的 | | |
樹
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 7 | 二元樹序列化 | C++ | 在) | 哦) | 中等的 | | |
| 85 | 在二元搜尋樹中插入節點 | C++ | 哦) | 複雜度(1) | 簡單的 | | |
| 88 | 最低共同祖先 | C++ | 在) | 哦) | 中等的 | EPI | |
| 175 | 反轉二元樹 | C++ | 在) | 哦) | 簡單的 | Leet程式碼 | |
| 第442章 | 實現特里樹 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | 特里樹 |
堆疊
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 12 | 最小堆疊 | C++ | 在) | 複雜度(1) | 中等的 | LeetCode、EPI | |
| 40 | 透過兩個堆疊實作佇列 | C++ | O(1),攤銷 | 在) | 中等的 | EPI | |
| 66 | 二元樹前序遍歷 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | Morris Traversal |
| 67 | 二元樹中序遍歷 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | Morris Traversal |
| 68 | 二元樹後序遍歷 | C++ | 在) | 複雜度(1) | 簡單的 | LeetCode、EPI | Morris Traversal |
| 122 | 直方圖中最大的矩形 | C++ | 在) | 在) | 難的 | LeetCode、EPI | 升序堆疊 |
| 126 | 最大樹 | C++ | 在) | 在) | 難的 | | 降序堆疊 |
| 第367章 | 表達式樹構建 | C++ | 在) | 在) | 難的 | | |
| 第368章 | 表達評估 | C++ | 在) | 在) | 難的 | | |
| 第369章 | 將表達式轉換為波蘭表示法 | C++ | 在) | 在) | 難的 | | |
| 370 | 將表達式轉換為逆波蘭表示法 | C++ | 在) | 在) | 難的 | | |
| 第421章 | 簡化路徑 | C++ | 在) | 在) | 中等的 | Leet程式碼 | |
| 第423章 | 有效括號 | C++ | 在) | 在) | 簡單的 | Leet程式碼 | |
| 第424章 | 評估逆波蘭表示法 | C++ | 在) | 在) | 中等的 | Leet程式碼 | |
| 第473章 | 新增和搜尋單字 | C++ | O(分鐘(n,h)) | O(分鐘(n,h) | 中等的 | Leet程式碼 | 特里樹 |
| 510 | 最大矩形 | C++ | O(m * n) | 在) | 難的 | Leet程式碼 | 升序堆疊 |
| 528 | 展平嵌套列表迭代器 | C++ | 在) | 哦) | 中等的 | Leet程式碼 | |
佇列
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 第362章 | 滑動視窗最大值 | C++ | 在) | 好的) | 難的 | EPI | 雙端隊列,棘手 |
堆疊
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 4 | 醜數二 | C++ | 在) | 複雜度(1) | 中等的 | CTCI | 二元搜尋樹、堆 |
| 81 | 資料流中位數 | C++ | O(nlogn) | 在) | 難的 | EPI | 二元搜尋樹、堆 |
| 130 | 堆化 | C++ | 在) | 複雜度(1) | 中等的 | | |
| 第364章 | 收集雨水 II | C++ | O(m * n * (logm + logn)) | O(m * n) | 難的 | | BFS、堆、棘手 |
| 518 | 超醜陋的數字 | C++ | O(n*k) | O(n+k) | 中等的 | Leet程式碼 | 二元搜尋樹、堆 |
哈希表
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 56 | 2 總和 | C++ | 在) | 在) | 中等的 | Leet程式碼 | |
| 124 | 最長連續序列 | C++ | 在) | 在) | 中等的 | LeetCode、EPI | |
| 128 | 哈希函數 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 129 | 重新散列 | C++ | 在) | 在) | 中等的 | | |
| 138 | 子數組和 | C++ | 在) | 在) | 簡單的 | | |
| 186 | 一條線上的最大點數 | C++ | O(n^2) | 在) | 中等的 | Leet程式碼 | |
| 211 | 字串排列 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 第384章 | 沒有重複字元的最長子串 | C++ | 在) | 複雜度(1) | 中等的 | LeetCode、EPI | |
| 第386章 | 最多包含 K 個不同字元的最長子串 | C++ | 在) | 在) | 中等的 | | |
| 第432章 | 找到有向圖中的弱連通分量 | C++ | O(nlogn) | 在) | 中等的 | | 聯合查找 |
| 第434章 | 島嶼數量 II | C++ | 好的) | 好的) | 難的 | | 聯合查找 |
| 第488章 | 快樂數 | C++ | 好的) | 好的) | 簡單的 | Leet程式碼 | |
| 第547章 | 兩個數組的交集 | C++ | O(m+n) | O(分鐘(m,n)) | 簡單的 | EPI、LeetCode | 兩個指針,二分查找 |
| 第548章 | 兩個數組的交集 II | C++ | O(m+n) | O(分鐘(m,n)) | 簡單的 | EPI、LeetCode | 兩個指針,二分查找 |
資料結構
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 134 | LRU緩存 | C++ | 複雜度(1) | 好的) | 難的 | LeetCode、EPI | 列表、哈希 |
數學
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 2 | 尾隨零 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 3 | 數字計數 | C++ | 複雜度(1) | 複雜度(1) | 中等的 | CTCI | |
| 114 | 獨特的路徑 | C++ | O(分鐘(m,n)) | 複雜度(1) | 簡單的 | 力扣、CTCI | 大學預科項目,數學 |
| 163 | 獨特的二元搜尋樹 | C++ | 在) | 複雜度(1) | 中等的 | CTCI | DP,數學, Catalan Number |
| 180 | 二進位表示 | C++ | 複雜度(1) | 複雜度(1) | 難的 | CTCI | |
| 197 | 排列索引 | C++ | O(n^2) | 複雜度(1) | 簡單的 | | |
| 198 | 排列指數II | C++ | O(n^2) | 在) | 中等的 | | |
| 第394章 | 硬幣排成一行 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | | |
| 第411章 | 格雷碼 | C++ | O(2^n) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第413章 | 反轉整數 | C++ | 複雜度(1) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第414章 | 兩個整數相除 | C++ | 複雜度(1) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第418章 | 整數轉羅馬 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第419章 | 羅馬數字轉整數 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第428章 | 戰俘(x,n) | C++ | 複雜度(1) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第445章 | 餘弦相似度 | C++ Python | 在) | 複雜度(1) | 簡單的 | | |
| 第517章 | 醜陋的數字 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | CTCI、LeetCode | |
種類
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 5 | 第 K 個最大元素 | C++ | O(n) ~ O(n^2) | 複雜度(1) | 中等的 | EPI | 兩個指針,快速排序 |
| 80 | 中位數 | C++ | 在) | 複雜度(1) | 簡單的 | EPI | |
| 139 | 最接近的子數組和 | C++ | O(nlogn) | 在) | 中等的 | | 種類 |
| 143 | 顏色排序 II | C++ | 在) | 複雜度(1) | 中等的 | | |
| 148 | 顏色排序 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 156 | 合併間隔 | C++ | O(nlogn) | 複雜度(1) | 簡單的 | LeetCode、EPI | |
| 184 | 最大數量 | C++ | O(nlogn) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第366章 | 斐波那契 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 第379章 | 重新排序數組以建構最小數量 | C++ | O(nlogn) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第387章 | 最小的差異 | C++ | O(最大(m, n) * log(最小(m, n))) | 複雜度(1) | 中等的 | | 兩個指針,二分查找 |
| 第399章 | 螺帽和螺栓問題 | C++ | O(nlogn) | O(logn) | 中等的 | | 快速排序 |
| 400 | 最大間隙 | C++ Python | 在) | 在) | 難的 | Leet程式碼 | 桶排序 |
| 第463章 | 整數排序 | C++ | O(n^2) | 複雜度(1) | 簡單的 | | 插入排序、選擇排序、冒泡排序 |
| 第464章 | 整數排序 II | C++ | O(nlogn) | 在) | 簡單的 | | 歸併排序、堆排序、快速排序 |
| 507 | 搖擺排序 II | C++ | 平均O(n) | 複雜度(1) | 中等的 | Leet程式碼 | 三分區 |
| 508 | 擺動排序 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
遞迴
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 22 | 展平列表 | C++ | 在) | 哦) | 簡單的 | | |
| 72 | 透過中序和後序遍歷構造二元樹 | C++ | 在) | 在) | 中等的 | LeetCode、EPI | |
| 73 | 從先序與中序遍歷構造二元樹 | C++ | 在) | 在) | 中等的 | LeetCode、EPI | |
| 93 | 平衡二元樹 | C++ | 在) | 哦) | 簡單的 | Leet程式碼 | |
| 94 | 二元樹最大路徑和 | C++ | 在) | 哦) | 中等的 | Leet程式碼 | |
| 95 | 驗證二元搜尋樹 | C++ | 在) | 哦) | 中等的 | Leet程式碼 | |
| 97 | 二元樹的最大深度 | C++ | 在) | 哦) | 簡單的 | Leet程式碼 | |
| 131 | 建築輪廓 | C++ Python | O(nlogn) | 在) | 難的 | EPI | 排序,二元樹排序 |
| 140 | 快速供電 | C++ | O(logn) | 複雜度(1) | 中等的 | | |
| 155 | 二元樹的最小深度 | C++ | 在) | 哦) | 簡單的 | Leet程式碼 | |
| 164 | 獨特的二元搜尋樹 II | C++ | O(n * 4^n / n^(3/2)) | 在) | 中等的 | Leet程式碼 | |
| 177 | 將排序數組轉換為具有最小高度的二元搜尋樹 | C++ | 在) | O(logn) | 簡單的 | Leet程式碼 | |
| 201 | 線段樹構建 | C++ | 在) | 哦) | 中等的 | | 線段樹、二元樹 |
| 第202章 | 線段樹查詢 | C++ | 哦) | 哦) | 中等的 | | 線段樹、二元樹 |
| 203 | 線段樹修改 | C++ | 哦) | 哦) | 中等的 | | 線段樹、二元樹 |
| 205 | 間隔最小數量 | C++ | 建構樹: O(n) ,查詢: (h) | 哦) | 難的 | | 線段樹、二元樹 |
| 206 | 區間和 | C++ | 建構樹: O(n) ,查詢: O(logn) | 在) | 難的 | | 線段樹,BIT |
| 207 | 區間總和II | C++ | 建構樹: O(n) ,查詢: O(logn) ,修改: O(logn) | 在) | 難的 | | 線段樹,BIT |
| 245 | 子樹 | C++ | O(m * n) | 複雜度(1) | 簡單的 | | Morris Traversal |
| 第247章 | 線段樹查詢二 | C++ | 哦) | 哦) | 難的 | | 線段樹、二元樹 |
| 248 | 數較小數 | C++ | 建構樹: O(n) ,查詢: O(logn) | 哦) | 中等的 | | 線段樹、二元樹 |
| 第371章 | 透過遞歸列印數字 | C++ | 在) | 在) | 中等的 | | |
| 第375章 | 克隆二元樹 | C++ | 在) | 哦) | 簡單的 | | |
| 第378章 | 將二元搜尋樹轉換為雙向鍊錶 | C++ | 在) | 哦) | 中等的 | | |
| 第439章 | 線段樹建構 II | C++ | 在) | 哦) | 中等的 | | 線段樹、二元樹 |
| 第453章 | 將二元樹展平為鍊錶 | C++ | 在) | 哦) | 簡單的 | Leet程式碼 | |
| 第469章 | 相同的二元樹 | C++ | 在) | 哦) | 簡單的 | | |
| 第532章 | 反向對 | C++ | O(nlogn) | 在) | 中等的 | 計數自身之前較小數字的變體 | 位,歸併排序 |
| 第535章 | 入室強盜 III | C++ | 在) | 哦) | 中等的 | Leet程式碼 | |
二分查找
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 14 | 目標的第一個位置 | C++ | O(logn) | 複雜度(1) | 簡單的 | | |
| 28 | 搜尋二維矩陣 | C++ | O(logm + logn) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 60 | 搜尋插入位置 | C++ | O(logn) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 61 | 搜尋範圍 | C++ | O(logn) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 62 | 在旋轉排序數組中搜尋 | C++ | O(logn) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 63 | 在旋轉排序數組 II 中搜索 | C++ | O(logn) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 65 | 兩個排序數組的中位數 | C++ | O(log(min(m, n))) | 複雜度(1) | 難的 | LeetCode、EPI | 棘手 |
| 74 | 第一個壞版本 | C++ | O(logn) | 複雜度(1) | 中等的 | | |
| 75 | 尋找峰值元素 | C++ | O(logn) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 76 | 最長遞增子序列 | C++ | O(nlogn) | 在) | 中等的 | CTCI | |
| 141 | 平方 (x) | C++ | O(logn) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 159 | 尋找旋轉排序數組中的最小值 | C++ | O(logn) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 160 | 求旋轉排序數組 II 中的最小值 | C++ | O(logn) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 183 | 木切 | C++ | O(nlogL) | 複雜度(1) | 中等的 | | |
| 390 | 尋找峰值元素 II | C++ Java Python | O(m+n) | 複雜度(1) | 難的 | | |
| 第437章 | 抄書 | C++ | O(nlogp) | 複雜度(1) | 難的 | 紫外線714 | |
廣度優先搜尋
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 69 | 二元樹層次順序遍歷 | C++ | 在) | 在) | 中等的 | Leet程式碼 | 廣度FS |
| 70 | 二元樹層次順序遍歷二 | C++ | 在) | 在) | 中等的 | Leet程式碼 | 廣度FS |
| 71 | 二元樹之字形層序遍歷 | C++ | 在) | 在) | 中等的 | Leet程式碼 | 廣度FS |
| 120 | 字梯 | C++ | O(n * d) | O(d) | 中等的 | Leet程式碼 | 廣度FS |
| 121 | 字梯II | C++ | O(n * d) | O(d) | 難的 | Leet程式碼 | BFS、回溯 |
| 127 | 拓撲排序 | C++ | O(|V|+|E|) | O(|E|) | 中等的 | | 深度優先搜尋、廣度優先搜索 |
| 137 | 複製圖 | C++ | O(|V|+|E|) | O(|V|) | 中等的 | | 廣度FS |
| 176 | 圖中兩個節點之間的路由 | C++ | 在) | 在) | 中等的 | | 深度優先搜尋、廣度優先搜索 |
| 178 | 圖有效樹 | C++ | O(|V| + |E|) | O(|V| + |E|) | 中等的 | Leet程式碼 | |
| 第431章 | 找到無向圖中的連通分量 | C++ | 在) | 在) | 中等的 | | 廣度FS |
| 第477章 | 週邊地區 | C++ | O(m * n) | O(m+n) | 中等的 | Leet程式碼 | |
深度優先搜尋
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 90 | 康和II | C++ | O(k * C(n, k)) | 好的) | 中等的 | | |
| 第376章 | 二元樹路徑和 | C++ | 在) | 哦) | 簡單的 | Leet程式碼 | |
| 第433章 | 島嶼數量 | C++ | O(m * n) | O(m * n) | 簡單的 | Leet程式碼 | 深度FS |
| 第480章 | 二元樹路徑 | C++ | O(n*h) | 哦) | 簡單的 | Leet程式碼 | |
回溯
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 15 | 排列 | C++ | O(n * n!) | 在) | 中等的 | LeetCode、EPI | |
| 16 | 排列二 | C++ | O(n * n!) | 在) | 中等的 | LeetCode、EPI | |
| 17 號 | 子集 | C++ | O(n * 2^n) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 18 | 子集II | C++ | O(n * 2^n) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 33 | N-皇后區 | C++ | O(n * n!) | 在) | 中等的 | LeetCode、EPI | |
| 34 | N-皇后區 II | C++ | O(n * n!) | 在) | 中等的 | LeetCode、EPI | |
| 123 | 單字搜尋 | C++ | O(m * n * l) | O(l) | 中等的 | Leet程式碼 | |
| 132 | 單字搜尋 II | C++ | O(m * n * l) | O(l) | 難的 | | 特里樹、DFS |
| 135 | 組合總和 | C++ | O(k * n^k) | 好的) | 中等的 | Leet程式碼 | 深度FS |
| 136 | 回文分區 | C++ | O(2^n) | 在) | 簡單的 | LeetCode、EPI | |
| 152 | 組合 | C++ | O(k * n^k) | 好的) | 中等的 | LeetCode、EPI | |
| 153 | 組合總和 II | C++ | O(k * C(n, k)) | 好的) | 中等的 | Leet程式碼 | 深度FS |
| 第425章 | 電話號碼的字母組合 | C++ | O(n * 4^n) | 在) | 中等的 | Leet程式碼 | |
| 第426章 | 恢復IP位址 | C++ | 複雜度(1) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第427章 | 產生括號 | C++ | O(4^n / n^(3/2)) | 在) | 中等的 | Leet程式碼 | |
二元搜尋樹
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 11 | 二元搜尋樹中的搜尋範圍 | C++ | 在) | 哦) | 中等的 | EPI | |
| 86 | 二元搜尋樹迭代器 | C++ | 複雜度(1) | 哦) | 難的 | Leet程式碼 | |
| 87 | 刪除二元搜尋樹中的節點 | C++ | 哦) | 哦) | 難的 | | |
| 249 | 計算其之前的較小數字 | C++ | O(nlogn) | 在) | 難的 | | BST、BIT、分而治之、歸併排序 |
| 360 | 滑動視窗中位數 | C++ | O(nlogw) | O(w) | 難的 | | BST,棘手 |
| 第391章 | 天空中的飛機數量 | C++ | O(nlogn) | 在) | 簡單的 | | 二元搜尋樹、堆 |
| 401 | 排序矩陣中的第 K 個最小數 | C++ | O(klog(min(m, n, k))) | O(min(m,n,k)) | 中等的 | | 二元搜尋樹、堆 |
動態規劃
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 20 | 骰子總和 | C++ | O(n^2) | 在) | 難的 | | |
| 29 | 交錯字串 | C++ | O(m * n) | O(分鐘(m,n)) | 中等的 | EPI | |
| 43 | 最大子數組 III | C++ | O(k * n) | O(k * n) | 難的 | | |
| 77 | 最長公共子序列 | C++ | O(m * n) | O(分鐘(m,n)) | 中等的 | | |
| 79 | 最長公共子串 | C++ | O(m * n) | O(分鐘(m,n)) | 中等的 | | |
| 89 | 總和 | C++ | O(k * n * t) | O(n * t) | 難的 | | |
| 91 | 最低調整成本 | C++ | O(k * n * t) | 好的) | 中等的 | | |
| 92 | 背包 | C++ | O(m * n) | 氧(米) | 簡單的 | | |
| 107 | 斷詞 | C++ | O(n * l^2) | 在) | 中等的 | LeetCode、EPI | |
| 108 | 回文分區 II | C++ | O(n^2) | 在) | 中等的 | LeetCode、EPI | |
| 109 | 三角形 | C++ | 在) | 在) | 簡單的 | LeetCode、EPI | |
| 110 | 最小路徑和 | C++ | O(m * n) | O(分鐘(m,n)) | 簡單的 | LeetCode、EPI | |
| 111 | 爬樓梯 | C++ | O(logn) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 115 | 獨特路徑II | C++ | O(m * n) | O(分鐘(m,n)) | 簡單的 | 力扣、CTCI | 大學預科項目,數學 |
| 118 | 不同的子序列 | C++ | O(m * n) | 氧(米) | 中等的 | Leet程式碼 | DP |
| 119 | 編輯距離 | C++ | O(m * n) | O(分鐘(m,n)) | 中等的 | 力扣、CTCI | DP |
| 125 | 背包二號 | C++ | O(m * n) | 氧(米) | 中等的 | | |
| 149 | 買賣股票的最佳時機 | C++ | 在) | 複雜度(1) | 中等的 | LeetCode、EPI | |
| 150 | 買賣股票的最佳時機 II | C++ | 在) | 複雜度(1) | 中等的 | LeetCode、EPI | |
| 151 | 買賣股票的最佳時機 III | C++ | 在) | 複雜度(1) | 中等的 | LeetCode、EPI | |
| 154 | 正規表示式匹配 | C++ | O(m * n) | 氧(米) | 難的 | Leet程式碼 | DP、遞迴 |
| 168 | 氣球爆裂 | C++ | O(n^3) | O(n^2) | 中等的 | Leet程式碼 | |
| 191 | 最大乘積子數組 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第392章 | 入室搶劫者 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第393章 | 買賣股票的最佳時機 IV | C++ | O(k * n) | 好的) | 難的 | LeetCode、EPI | |
| 第395章 | 硬幣排成一排 II | C++ | 在) | 複雜度(1) | 中等的 | | |
| 第396章 | 硬幣排成一行 III | C++ | O(n^2) | 在) | 難的 | | |
| 第397章 | 最長連續遞增子序列 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 第398章 | 最長連續遞增子序列 II | C++ | O(m * n) | O(m * n) | 難的 | | |
| 403 | 連續子數組和 II | C++ | 在) | 複雜度(1) | 中等的 | EPI | |
| 第430章 | 打亂字串 | C++ | O(n^4) | O(n^3) | 難的 | Leet程式碼 | |
| 第435章 | 郵局問題 | C++ | O(k * n^2) | 在) | 難的 | 北京大學1160 | |
| 第436章 | 最大平方 | C++ | O(m * n) | 在) | 中等的 | Leet程式碼 | |
| 第512章 | 解碼方式 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 513 | 完全平方數 | C++ | O(n * sqrt(n)) | 在) | 中等的 | Leet程式碼 | |
| 514 | 油漆柵欄 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 515 | 油漆屋 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 516 | 油漆屋 II | C++ | O(n*k) | 好的) | 難的 | Leet程式碼 | |
| 第534章 | 入室強盜 II | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 第564章 | 背包六 | C++ | O(n * t) | O(t) | 中等的 | | |
貪婪的
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 41 | 最大子數組 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 42 | 最大子數組 II | C++ | 在) | 在) | 中等的 | | |
| 44 | 最小子數組 | C++ | 在) | 複雜度(1) | 簡單的 | | |
| 45 | 最大子數組差異 | C++ | 在) | 在) | 中等的 | | |
| 116 | 跳躍遊戲 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 117 | 跳躍遊戲二 | C++ | 在) | 複雜度(1) | 中等的 | Leet程式碼 | |
| 182 | 刪除數字 | C++ | 在) | 在) | 中等的 | | |
| 第187章 | 加油站 | C++ | 在) | 複雜度(1) | 簡單的 | Leet程式碼 | |
| 192 | 通配符匹配 | C++ | O(m+n) | 複雜度(1) | 難的 | Leet程式碼 | 貪心、DP、遞歸 |
| 第402章 | 連續子數組和 | C++ | 在) | 複雜度(1) | 中等的 | EPI | |
| 第412章 | 糖果 | C++ | 在) | 在) | 難的 | Leet程式碼 | 貪婪的 |
| 第552章 | 創建最大數量 | C++ | O(k * (m + n + k)) ~ O(k * (m + n + k^2)) | O(m + n + k^2) | 難的 | Leet程式碼 | 貪心,DP |
物件導向設計
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 204 | 辛格頓 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | | |
| 208 | 賦值運算子重載(僅限 C++) | C++ | 在) | 複雜度(1) | 中等的 | | |
| 第496章 | 玩具廠 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | | |
| 第497章 | 形狀工廠 | C++ | 複雜度(1) | 複雜度(1) | 簡單的 | | |
| 第498章 | 停車場 | C++ | O(n * m * k) | O(n * m * k) | 難的 | CTCI | OO 設計、Pimpl 慣用法、智慧指針 |
系統設計
| # | 標題 | 解決方案 | 時間 | 空間 | 困難 | 標籤 | 筆記 |
|---|
| 501 | 迷你推特 | C++ | O(克洛古) | O(t + f) | 中等的 | | |