皮棉代码
截至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) | 中等的 | | |