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