Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_algorithm
提交
f3c2d242
S
skill_tree_algorithm
项目概览
CSDN 技术社区
/
skill_tree_algorithm
通知
9
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f3c2d242
编写于
11月 17, 2021
作者:
每日一练社区
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update solution.md
上级
4a54b9c4
变更
49
隐藏空白更改
内联
并排
Showing
49 changed file
with
349 addition
and
0 deletion
+349
-0
data/2.算法中阶/4.leetcode-栈与队列/4.224-基本计算器/solution.md
data/2.算法中阶/4.leetcode-栈与队列/4.224-基本计算器/solution.md
+3
-0
data/2.算法中阶/4.leetcode-栈与队列/6.155-最小栈/solution.md
data/2.算法中阶/4.leetcode-栈与队列/6.155-最小栈/solution.md
+9
-0
data/2.算法中阶/4.leetcode-栈与队列/7.218-天际线问题/solution.md
data/2.算法中阶/4.leetcode-栈与队列/7.218-天际线问题/solution.md
+5
-0
data/2.算法中阶/4.leetcode-栈与队列/9.150-逆波兰表达式求值/solution.md
data/2.算法中阶/4.leetcode-栈与队列/9.150-逆波兰表达式求值/solution.md
+15
-0
data/2.算法中阶/5.leetcode-排序算法/1.493-翻转对/solution.md
data/2.算法中阶/5.leetcode-排序算法/1.493-翻转对/solution.md
+4
-0
data/2.算法中阶/5.leetcode-排序算法/10.378-有序矩阵中第 K 小的元素/solution.md
data/2.算法中阶/5.leetcode-排序算法/10.378-有序矩阵中第 K 小的元素/solution.md
+3
-0
data/2.算法中阶/5.leetcode-排序算法/2.324-摆动排序 II/solution.md
data/2.算法中阶/5.leetcode-排序算法/2.324-摆动排序 II/solution.md
+3
-0
data/2.算法中阶/5.leetcode-排序算法/3.274-H 指数/solution.md
data/2.算法中阶/5.leetcode-排序算法/3.274-H 指数/solution.md
+4
-0
data/2.算法中阶/5.leetcode-排序算法/4.347-前 K 个高频元素/solution.md
data/2.算法中阶/5.leetcode-排序算法/4.347-前 K 个高频元素/solution.md
+2
-0
data/2.算法中阶/5.leetcode-排序算法/5.354-俄罗斯套娃信封问题/solution.md
data/2.算法中阶/5.leetcode-排序算法/5.354-俄罗斯套娃信封问题/solution.md
+3
-0
data/2.算法中阶/5.leetcode-排序算法/6.164-最大间距/solution.md
data/2.算法中阶/5.leetcode-排序算法/6.164-最大间距/solution.md
+4
-0
data/2.算法中阶/5.leetcode-排序算法/7.327-区间和的个数/solution.md
data/2.算法中阶/5.leetcode-排序算法/7.327-区间和的个数/solution.md
+3
-0
data/2.算法中阶/5.leetcode-排序算法/8.912-排序数组/solution.md
data/2.算法中阶/5.leetcode-排序算法/8.912-排序数组/solution.md
+2
-0
data/2.算法中阶/5.leetcode-排序算法/9.315-计算右侧小于当前元素的个数/solution.md
data/2.算法中阶/5.leetcode-排序算法/9.315-计算右侧小于当前元素的个数/solution.md
+8
-0
data/2.算法中阶/6.leetcode-双指针/4.142-环形链表 II/solution.md
data/2.算法中阶/6.leetcode-双指针/4.142-环形链表 II/solution.md
+6
-0
data/2.算法中阶/6.leetcode-双指针/5.141-环形链表/solution.md
data/2.算法中阶/6.leetcode-双指针/5.141-环形链表/solution.md
+6
-0
data/3.算法高阶/1.leetcode-树/10.103-二叉树的锯齿形层序遍历/solution.md
data/3.算法高阶/1.leetcode-树/10.103-二叉树的锯齿形层序遍历/solution.md
+9
-0
data/3.算法高阶/1.leetcode-树/3.124-二叉树中的最大路径和/solution.md
data/3.算法高阶/1.leetcode-树/3.124-二叉树中的最大路径和/solution.md
+4
-0
data/3.算法高阶/1.leetcode-树/8.101-对称二叉树/solution.md
data/3.算法高阶/1.leetcode-树/8.101-对称二叉树/solution.md
+8
-0
data/3.算法高阶/1.leetcode-树/9.102-二叉树的层序遍历/solution.md
data/3.算法高阶/1.leetcode-树/9.102-二叉树的层序遍历/solution.md
+9
-0
data/3.算法高阶/2.leetcode-哈希表/10.166-分数到小数/solution.md
data/3.算法高阶/2.leetcode-哈希表/10.166-分数到小数/solution.md
+5
-0
data/3.算法高阶/2.leetcode-哈希表/2.205-同构字符串/solution.md
data/3.算法高阶/2.leetcode-哈希表/2.205-同构字符串/solution.md
+3
-0
data/3.算法高阶/2.leetcode-哈希表/7.126-单词接龙 II/solution.md
data/3.算法高阶/2.leetcode-哈希表/7.126-单词接龙 II/solution.md
+8
-0
data/3.算法高阶/2.leetcode-哈希表/8.127-单词接龙/solution.md
data/3.算法高阶/2.leetcode-哈希表/8.127-单词接龙/solution.md
+5
-0
data/3.算法高阶/2.leetcode-哈希表/9.128-最长连续序列/solution.md
data/3.算法高阶/2.leetcode-哈希表/9.128-最长连续序列/solution.md
+3
-0
data/3.算法高阶/3.leetcode-图与搜索/10.130-被围绕的区域/solution.md
data/3.算法高阶/3.leetcode-图与搜索/10.130-被围绕的区域/solution.md
+4
-0
data/3.算法高阶/3.leetcode-图与搜索/2.133-克隆图/solution.md
data/3.算法高阶/3.leetcode-图与搜索/2.133-克隆图/solution.md
+15
-0
data/3.算法高阶/3.leetcode-图与搜索/3.332-重新安排行程/solution.md
data/3.算法高阶/3.leetcode-图与搜索/3.332-重新安排行程/solution.md
+4
-0
data/3.算法高阶/3.leetcode-图与搜索/4.207-课程表/solution.md
data/3.算法高阶/3.leetcode-图与搜索/4.207-课程表/solution.md
+4
-0
data/3.算法高阶/3.leetcode-图与搜索/5.329-矩阵中的最长递增路径/solution.md
data/3.算法高阶/3.leetcode-图与搜索/5.329-矩阵中的最长递增路径/solution.md
+5
-0
data/3.算法高阶/3.leetcode-图与搜索/6.210-课程表 II/solution.md
data/3.算法高阶/3.leetcode-图与搜索/6.210-课程表 II/solution.md
+6
-0
data/3.算法高阶/3.leetcode-图与搜索/8.112-路径总和/solution.md
data/3.算法高阶/3.leetcode-图与搜索/8.112-路径总和/solution.md
+3
-0
data/3.算法高阶/3.leetcode-图与搜索/9.113-路径总和 II/solution.md
data/3.算法高阶/3.leetcode-图与搜索/9.113-路径总和 II/solution.md
+3
-0
data/3.算法高阶/5.leetcode-设计/1.355-设计推特/solution.md
data/3.算法高阶/5.leetcode-设计/1.355-设计推特/solution.md
+12
-0
data/3.算法高阶/5.leetcode-设计/10.297-二叉树的序列化与反序列化/solution.md
data/3.算法高阶/5.leetcode-设计/10.297-二叉树的序列化与反序列化/solution.md
+4
-0
data/3.算法高阶/5.leetcode-设计/2.380-O(1) 时间插入、删除和获取随机元素/solution.md
....算法高阶/5.leetcode-设计/2.380-O(1) 时间插入、删除和获取随机元素/solution.md
+13
-0
data/3.算法高阶/5.leetcode-设计/3.381-O(1) 时间插入、删除和获取随机元素 - 允许重复/solution.md
....leetcode-设计/3.381-O(1) 时间插入、删除和获取随机元素 - 允许重复/solution.md
+8
-0
data/3.算法高阶/5.leetcode-设计/4.460-LFU 缓存/solution.md
data/3.算法高阶/5.leetcode-设计/4.460-LFU 缓存/solution.md
+23
-0
data/3.算法高阶/5.leetcode-设计/5.146-LRU 缓存机制/solution.md
data/3.算法高阶/5.leetcode-设计/5.146-LRU 缓存机制/solution.md
+15
-0
data/3.算法高阶/5.leetcode-设计/6.173-二叉搜索树迭代器/solution.md
data/3.算法高阶/5.leetcode-设计/6.173-二叉搜索树迭代器/solution.md
+14
-0
data/3.算法高阶/5.leetcode-设计/7.208-实现 Trie (前缀树)/solution.md
data/3.算法高阶/5.leetcode-设计/7.208-实现 Trie (前缀树)/solution.md
+12
-0
data/3.算法高阶/5.leetcode-设计/9.341-扁平化嵌套列表迭代器/solution.md
data/3.算法高阶/5.leetcode-设计/9.341-扁平化嵌套列表迭代器/solution.md
+9
-0
data/3.算法高阶/8.leetcode-贪心/1.122-买卖股票的最佳时机 II/solution.md
data/3.算法高阶/8.leetcode-贪心/1.122-买卖股票的最佳时机 II/solution.md
+8
-0
data/3.算法高阶/8.leetcode-贪心/10.330-按要求补齐数组/solution.md
data/3.算法高阶/8.leetcode-贪心/10.330-按要求补齐数组/solution.md
+10
-0
data/3.算法高阶/8.leetcode-贪心/4.135-分发糖果/solution.md
data/3.算法高阶/8.leetcode-贪心/4.135-分发糖果/solution.md
+5
-0
data/3.算法高阶/8.leetcode-贪心/6.134-加油站/solution.md
data/3.算法高阶/8.leetcode-贪心/6.134-加油站/solution.md
+17
-0
data/3.算法高阶/8.leetcode-贪心/7.179-最大数/solution.md
data/3.算法高阶/8.leetcode-贪心/7.179-最大数/solution.md
+4
-0
data/3.算法高阶/8.leetcode-贪心/8.316-去除重复字母/solution.md
data/3.算法高阶/8.leetcode-贪心/8.316-去除重复字母/solution.md
+2
-0
data/3.算法高阶/8.leetcode-贪心/9.321-拼接最大数/solution.md
data/3.算法高阶/8.leetcode-贪心/9.321-拼接最大数/solution.md
+15
-0
未找到文件。
data/2.算法中阶/4.leetcode-栈与队列/4.224-基本计算器/solution.md
浏览文件 @
f3c2d242
...
...
@@ -8,6 +8,7 @@
<pre>
<strong>
输入:
</strong>
s = "1 + 1"
<strong>
输出:
</strong>
2
</pre>
...
...
@@ -15,6 +16,7 @@
<pre>
<strong>
输入:
</strong>
s = " 2-1 + 2 "
<strong>
输出:
</strong>
3
</pre>
...
...
@@ -22,6 +24,7 @@
<pre>
<strong>
输入:
</strong>
s = "(1+(4+5+2)-3)+(6+8)"
<strong>
输出:
</strong>
23
</pre>
...
...
data/2.算法中阶/4.leetcode-栈与队列/6.155-最小栈/solution.md
浏览文件 @
f3c2d242
...
...
@@ -21,14 +21,23 @@
[null,null,null,null,-3,null,0,-2]
<strong>
解释:
</strong>
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --
>
返回 -3.
minStack.pop();
minStack.top(); --
>
返回 0.
minStack.getMin(); --
>
返回 -2.
</pre>
<p>
</p>
...
...
data/2.算法中阶/4.leetcode-栈与队列/7.218-天际线问题/solution.md
浏览文件 @
f3c2d242
...
...
@@ -20,15 +20,20 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2020/12/01/merged.jpg"
style=
"width: 800px; height: 331px;"
/>
<pre>
<strong>
输入:
</strong>
buildings = [[2,9,10],[3,7,15],[5,12,12],[15,20,10],[19,24,8]]
<strong>
输出:
</strong>
[[2,10],[3,15],[7,12],[12,0],[15,10],[20,8],[24,0]]
<strong>
解释:
</strong>
图 A
<strong>
</strong>
显示输入的所有建筑物的位置和高度,
图 B 显示由这些建筑物形成的天际线。图 B 中的红点表示输出列表中的关键点。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
buildings = [[0,2,3],[2,5,3]]
<strong>
输出:
</strong>
[[0,3],[5,0]]
</pre>
...
...
data/2.算法中阶/4.leetcode-栈与队列/9.150-逆波兰表达式求值/solution.md
浏览文件 @
f3c2d242
...
...
@@ -19,31 +19,46 @@
<pre>
<strong>
输入:
</strong>
tokens = ["2","1","+","3","
*
"]
<strong>
输出:
</strong>
9
<strong>
解释:
</strong>
该算式转化为常见的中缀算术表达式为:((2 + 1)
*
3) = 9
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
tokens = ["4","13","5","/","+"]
<strong>
输出:
</strong>
6
<strong>
解释:
</strong>
该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6
</pre>
<p><strong>
示例 3:
</strong></p>
<pre>
<strong>
输入:
</strong>
tokens = ["10","6","9","3","+","-11","
*","/","*
","17","+","5","+"]
<strong>
输出:
</strong>
22
<strong>
解释:
</strong>
该算式转化为常见的中缀算术表达式为:
((10
* (6 / ((9 + 3) *
-11))) + 17) + 5
= ((10
* (6 / (12 *
-11))) + 17) + 5
= ((10
*
(6 / -132)) + 17) + 5
= ((10
*
0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22
</pre>
<p>
</p>
...
...
data/2.算法中阶/5.leetcode-排序算法/1.493-翻转对/solution.md
浏览文件 @
f3c2d242
...
...
@@ -7,14 +7,18 @@
<p><strong>
示例 1:
</strong></p>
<pre>
<strong>
输入
</strong>
: [1,3,2,3,1]
<strong>
输出
</strong>
: 2
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入
</strong>
: [2,4,3,5,1]
<strong>
输出
</strong>
: 3
</pre>
...
...
data/2.算法中阶/5.leetcode-排序算法/10.378-有序矩阵中第 K 小的元素/solution.md
浏览文件 @
f3c2d242
...
...
@@ -9,7 +9,9 @@
<pre>
<strong>
输入:
</strong>
matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8
<strong>
输出:
</strong>
13
<strong>
解释:
</strong>
矩阵中的元素为 [1,5,9,10,11,12,13,
<strong>
13
</strong>
,15],第 8 小元素是 13
</pre>
...
...
@@ -17,6 +19,7 @@
<pre>
<strong>
输入:
</strong>
matrix = [[-5]], k = 1
<strong>
输出:
</strong>
-5
</pre>
...
...
data/2.算法中阶/5.leetcode-排序算法/2.324-摆动排序 II/solution.md
浏览文件 @
f3c2d242
...
...
@@ -10,7 +10,9 @@
<pre>
<strong>
输入:
</strong>
nums = [1,5,1,1,6,4]
<strong>
输出:
</strong>
[1,6,1,5,1,4]
<strong>
解释:
</strong>
[1,4,1,5,1,6] 同样是符合题目要求的结果,可以被判题程序接受。
</pre>
...
...
@@ -18,6 +20,7 @@
<pre>
<strong>
输入:
</strong>
nums = [1,3,2,2,3,1]
<strong>
输出:
</strong>
[2,3,1,3,1,2]
</pre>
...
...
data/2.算法中阶/5.leetcode-排序算法/3.274-H 指数/solution.md
浏览文件 @
f3c2d242
...
...
@@ -14,14 +14,18 @@
<pre>
<strong>
输入:
</strong><code>
citations = [3,0,6,1,5]
</code>
<strong>
输出:
</strong>
3
<strong>
解释:
</strong>
给定数组表示研究者总共有
<code>
5
</code>
篇论文,每篇论文相应的被引用了
<code>
3, 0, 6, 1, 5
</code>
次。
由于研究者有
<code>
3
</code>
篇论文每篇
<strong>
至少
</strong>
被引用了
<code>
3
</code>
次,其余两篇论文每篇被引用
<strong>
不多于
</strong>
<code>
3
</code>
次,所以她的
<em>
h
</em>
指数是
<code>
3
</code>
。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
citations = [1,3,1]
<strong>
输出:
</strong>
1
</pre>
...
...
data/2.算法中阶/5.leetcode-排序算法/4.347-前 K 个高频元素/solution.md
浏览文件 @
f3c2d242
...
...
@@ -8,6 +8,7 @@
<pre>
<strong>
输入:
</strong>
nums = [1,1,1,2,2,3], k = 2
<strong>
输出:
</strong>
[1,2]
</pre>
...
...
@@ -15,6 +16,7 @@
<pre>
<strong>
输入:
</strong>
nums = [1], k = 1
<strong>
输出:
</strong>
[1]
</pre>
<p>
</p>
...
...
data/2.算法中阶/5.leetcode-排序算法/5.354-俄罗斯套娃信封问题/solution.md
浏览文件 @
f3c2d242
...
...
@@ -13,13 +13,16 @@
<pre>
<strong>
输入:
</strong>
envelopes = [[5,4],[6,4],[6,7],[2,3]]
<strong>
输出:
</strong>
3
<strong>
解释:
</strong>
最多信封的个数为
<code>
3, 组合为:
</code>
[2,3] => [5,4] => [6,7]。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
envelopes = [[1,1],[1,1],[1,1]]
<strong>
输出:
</strong>
1
</pre>
...
...
data/2.算法中阶/5.leetcode-排序算法/6.164-最大间距/solution.md
浏览文件 @
f3c2d242
...
...
@@ -7,13 +7,17 @@
<p><strong>
示例
1:
</strong></p>
<pre><strong>
输入:
</strong>
[3,6,9,1]
<strong>
输出:
</strong>
3
<strong>
解释:
</strong>
排序后的数组是 [1,3,6,9]
<strong><em>
,
</em></strong>
其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。
</pre>
<p><strong>
示例
2:
</strong></p>
<pre><strong>
输入:
</strong>
[10]
<strong>
输出:
</strong>
0
<strong>
解释:
</strong>
数组元素个数小于 2,因此返回 0。
</pre>
<p><strong>
说明:
</strong></p>
...
...
data/2.算法中阶/5.leetcode-排序算法/7.327-区间和的个数/solution.md
浏览文件 @
f3c2d242
...
...
@@ -9,7 +9,9 @@
<pre>
<strong>
输入:
</strong>
nums = [-2,5,-1], lower = -2, upper = 2
<strong>
输出:
</strong>
3
<strong>
解释:
</strong>
存在三个区间:[0,0]、[2,2] 和 [0,2] ,对应的区间和分别是:-2 、-1 、2 。
</pre>
...
...
@@ -17,6 +19,7 @@
<pre>
<strong>
输入:
</strong>
nums = [0], lower = 0, upper = 0
<strong>
输出:
</strong>
1
</pre>
...
...
data/2.算法中阶/5.leetcode-排序算法/8.912-排序数组/solution.md
浏览文件 @
f3c2d242
...
...
@@ -10,12 +10,14 @@
<p><strong>
示例 1:
</strong></p>
<pre><strong>
输入:
</strong>
nums = [5,2,3,1]
<strong>
输出:
</strong>
[1,2,3,5]
</pre>
<p><strong>
示例 2:
</strong></p>
<pre><strong>
输入:
</strong>
nums = [5,1,1,2,0,0]
<strong>
输出:
</strong>
[0,0,1,1,2,5]
</pre>
...
...
data/2.算法中阶/5.leetcode-排序算法/9.315-计算右侧小于当前元素的个数/solution.md
浏览文件 @
f3c2d242
...
...
@@ -8,11 +8,17 @@
<pre>
<strong>输入:</strong>nums = [5,2,6,1]
<strong>输出:</strong><code>[2,1,1,0]
<strong>解释:</strong></code>
5 的右侧有 <strong>2 </strong>个更小的元素 (2 和 1)
2 的右侧仅有 <strong>1 </strong>个更小的元素 (1)
6 的右侧有 <strong>1 </strong>个更小的元素 (1)
1 的右侧有 <strong>0 </strong>个更小的元素
</pre>
...
...
@@ -20,6 +26,7 @@
<pre>
<strong>输入:</strong>nums = [-1]
<strong>输出:</strong>[0]
</pre>
...
...
@@ -27,6 +34,7 @@
<pre>
<strong>输入:</strong>nums = [-1,-1]
<strong>输出:</strong>[0,0]
</pre>
...
...
data/2.算法中阶/6.leetcode-双指针/4.142-环形链表 II/solution.md
浏览文件 @
f3c2d242
...
...
@@ -20,7 +20,9 @@
<pre>
<strong>
输入:
</strong>
head = [3,2,0,-4], pos = 1
<strong>
输出:
</strong>
返回索引为 1 的链表节点
<strong>
解释:
</strong>
链表中有一个环,其尾部连接到第二个节点。
</pre>
...
...
@@ -30,7 +32,9 @@
<pre>
<strong>
输入:
</strong>
head = [1,2], pos = 0
<strong>
输出:
</strong>
返回索引为 0 的链表节点
<strong>
解释:
</strong>
链表中有一个环,其尾部连接到第一个节点。
</pre>
...
...
@@ -40,7 +44,9 @@
<pre>
<strong>
输入:
</strong>
head = [1], pos = -1
<strong>
输出:
</strong>
返回 null
<strong>
解释:
</strong>
链表中没有环。
</pre>
...
...
data/2.算法中阶/6.leetcode-双指针/5.141-环形链表/solution.md
浏览文件 @
f3c2d242
...
...
@@ -19,7 +19,9 @@
<p><img
alt=
""
src=
"https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist.png"
style=
"height: 97px; width: 300px;"
></p>
<pre><strong>
输入:
</strong>
head = [3,2,0,-4], pos = 1
<strong>
输出:
</strong>
true
<strong>
解释:
</strong>
链表中有一个环,其尾部连接到第二个节点。
</pre>
...
...
@@ -28,7 +30,9 @@
<p><img
alt=
""
src=
"https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test2.png"
style=
"height: 74px; width: 141px;"
></p>
<pre><strong>
输入:
</strong>
head = [1,2], pos = 0
<strong>
输出:
</strong>
true
<strong>
解释:
</strong>
链表中有一个环,其尾部连接到第一个节点。
</pre>
...
...
@@ -37,7 +41,9 @@
<p><img
alt=
""
src=
"https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test3.png"
style=
"height: 45px; width: 45px;"
></p>
<pre><strong>
输入:
</strong>
head = [1], pos = -1
<strong>
输出:
</strong>
false
<strong>
解释:
</strong>
链表中没有环。
</pre>
...
...
data/3.算法高阶/1.leetcode-树/10.103-二叉树的锯齿形层序遍历/solution.md
浏览文件 @
f3c2d242
...
...
@@ -3,13 +3,18 @@
<p>
给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
</p>
<p>
例如:
<br
/>
给定二叉树
<code>
[3,9,20,null,null,15,7]
</code>
,
</p>
<pre>
3
/
\
9 20
/ \
15 7
</pre>
...
...
@@ -17,9 +22,13 @@
<pre>
[
[3],
[20,9],
[15,7]
]
</pre>
...
...
data/3.算法高阶/1.leetcode-树/3.124-二叉树中的最大路径和/solution.md
浏览文件 @
f3c2d242
...
...
@@ -12,14 +12,18 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2020/10/13/exx1.jpg"
style=
"width: 322px; height: 182px;"
/>
<pre>
<strong>
输入:
</strong>
root = [1,2,3]
<strong>
输出:
</strong>
6
<strong>
解释:
</strong>
最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6
</pre>
<p><strong>
示例 2:
</strong></p>
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2020/10/13/exx2.jpg"
/>
<pre>
<strong>
输入:
</strong>
root = [-10,9,20,null,null,15,7]
<strong>
输出:
</strong>
42
<strong>
解释:
</strong>
最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42
</pre>
...
...
data/3.算法高阶/1.leetcode-树/8.101-对称二叉树/solution.md
浏览文件 @
f3c2d242
...
...
@@ -7,9 +7,13 @@
<p>
例如,二叉树
<code>
[1,2,2,3,4,4,3]
</code>
是对称的。
</p>
<pre>
1
/
\
2 2
/
\
/
\
3 4 4 3
</pre>
...
...
@@ -18,9 +22,13 @@
<p>
但是下面这个
<code>
[1,2,2,null,3,null,3]
</code>
则不是镜像对称的:
</p>
<pre>
1
/
\
2 2
\
\
3 3
</pre>
...
...
data/3.算法高阶/1.leetcode-树/9.102-二叉树的层序遍历/solution.md
浏览文件 @
f3c2d242
...
...
@@ -5,13 +5,18 @@
<p>
</p>
<p><strong>
示例:
</strong><br
/>
二叉树:
<code>
[3,9,20,null,null,15,7]
</code>
,
</p>
<pre>
3
/
\
9 20
/ \
15 7
</pre>
...
...
@@ -19,9 +24,13 @@
<pre>
[
[3],
[9,20],
[15,7]
]
</pre>
...
...
data/3.算法高阶/2.leetcode-哈希表/10.166-分数到小数/solution.md
浏览文件 @
f3c2d242
...
...
@@ -14,6 +14,7 @@
<pre>
<strong>
输入:
</strong>
numerator = 1, denominator = 2
<strong>
输出:
</strong>
"0.5"
</pre>
...
...
@@ -21,6 +22,7 @@
<pre>
<strong>
输入:
</strong>
numerator = 2, denominator = 1
<strong>
输出:
</strong>
"2"
</pre>
...
...
@@ -28,6 +30,7 @@
<pre>
<strong>
输入:
</strong>
numerator = 2, denominator = 3
<strong>
输出:
</strong>
"0.(6)"
</pre>
...
...
@@ -35,6 +38,7 @@
<pre>
<strong>
输入:
</strong>
numerator = 4, denominator = 333
<strong>
输出:
</strong>
"0.(012)"
</pre>
...
...
@@ -42,6 +46,7 @@
<pre>
<strong>
输入:
</strong>
numerator = 1, denominator = 5
<strong>
输出:
</strong>
"0.2"
</pre>
...
...
data/3.算法高阶/2.leetcode-哈希表/2.205-同构字符串/solution.md
浏览文件 @
f3c2d242
...
...
@@ -12,6 +12,7 @@
<pre>
<strong>
输入:
</strong><strong><em>
s
</em></strong>
=
<code>
"egg",
</code><strong><em>
t =
</em></strong><code>
"add"
</code>
<strong>
输出:
</strong>
true
</pre>
...
...
@@ -19,12 +20,14 @@
<pre>
<strong>
输入:
</strong><strong><em>
s
</em></strong>
=
<code>
"foo",
</code><strong><em>
t =
</em></strong><code>
"bar"
</code>
<strong>
输出:
</strong>
false
</pre>
<p><strong>
示例 3:
</strong></p>
<pre>
<strong>
输入:
</strong><strong><em>
s
</em></strong>
=
<code>
"paper",
</code><strong><em>
t =
</em></strong><code>
"title"
</code>
<strong>
输出:
</strong>
true
</pre>
<p>
</p>
...
...
data/3.算法高阶/2.leetcode-哈希表/7.126-单词接龙 II/solution.md
浏览文件 @
f3c2d242
...
...
@@ -18,18 +18,26 @@
<pre>
<strong>
输入:
</strong>
beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]
<strong>
输出:
</strong>
[["hit","hot","dot","dog","cog"],["hit","hot","lot","log","cog"]]
<strong>
解释:
</strong>
存在 2 种最短的转换序列:
"hit" -> "hot" -> "dot" -> "dog" -> "cog"
"hit" -> "hot" -> "lot" -> "log" -> "cog"
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log"]
<strong>
输出:
</strong>
[]
<strong>
解释:
</strong>
endWord "cog" 不在字典 wordList 中,所以不存在符合要求的转换序列。
</pre>
<p>
</p>
...
...
data/3.算法高阶/2.leetcode-哈希表/8.127-单词接龙/solution.md
浏览文件 @
f3c2d242
...
...
@@ -16,15 +16,20 @@
<pre>
<strong>
输入:
</strong>
beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]
<strong>
输出:
</strong>
5
<strong>
解释:
</strong>
一个最短转换序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的长度 5。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log"]
<strong>
输出:
</strong>
0
<strong>
解释:
</strong>
endWord "cog" 不在字典中,所以无法进行转换。
</pre>
<p>
</p>
...
...
data/3.算法高阶/2.leetcode-哈希表/9.128-最长连续序列/solution.md
浏览文件 @
f3c2d242
...
...
@@ -10,13 +10,16 @@
<pre>
<strong>
输入:
</strong>
nums = [100,4,200,1,3,2]
<strong>
输出:
</strong>
4
<strong>
解释:
</strong>
最长数字连续序列是
<code>
[1, 2, 3, 4]。它的长度为 4。
</code></pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
nums = [0,3,7,2,5,8,4,6,0,1]
<strong>
输出:
</strong>
9
</pre>
...
...
data/3.算法高阶/3.leetcode-图与搜索/10.130-被围绕的区域/solution.md
浏览文件 @
f3c2d242
...
...
@@ -9,14 +9,18 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/02/19/xogrid.jpg"
style=
"width: 550px; height: 237px;"
/>
<pre>
<strong>
输入:
</strong>
board = [["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]
<strong>
输出:
</strong>
[["X","X","X","X"],["X","X","X","X"],["X","X","X","X"],["X","O","X","X"]]
<strong>
解释:
</strong>
被围绕的区间不会存在于边界上,换句话说,任何边界上的
<code>
'O'
</code>
都不会被填充为
<code>
'X'
</code>
。 任何不在边界上,或不与边界上的
<code>
'O'
</code>
相连的
<code>
'O'
</code>
最终都会被填充为
<code>
'X'
</code>
。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
board = [["X"]]
<strong>
输出:
</strong>
[["X"]]
</pre>
...
...
data/3.算法高阶/3.leetcode-图与搜索/2.133-克隆图/solution.md
浏览文件 @
f3c2d242
...
...
@@ -5,7 +5,9 @@
<p>
图中的每个节点都包含它的值
<code>
val
</code>
(
<code>
int
</code>
) 和其邻居的列表(
<code>
list[Node]
</code>
)。
</p>
<pre>
class Node {
public int val;
public List<Node> neighbors;
}
</pre>
...
...
@@ -26,12 +28,19 @@
<p><img
alt=
""
src=
"https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/02/01/133_clone_graph_question.png"
style=
"height: 500px; width: 500px;"
></p>
<pre><strong>
输入:
</strong>
adjList = [[2,4],[1,3],[2,4],[1,3]]
<strong>
输出:
</strong>
[[2,4],[1,3],[2,4],[1,3]]
<strong>
解释:
</strong>
图中有 4 个节点。
节点 1 的值是 1,它有两个邻居:节点 2 和 4 。
节点 2 的值是 2,它有两个邻居:节点 1 和 3 。
节点 3 的值是 3,它有两个邻居:节点 2 和 4 。
节点 4 的值是 4,它有两个邻居:节点 1 和 3 。
</pre>
...
...
@@ -40,14 +49,19 @@
<p><img
alt=
""
src=
"https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/02/01/graph.png"
style=
"height: 148px; width: 163px;"
></p>
<pre><strong>
输入:
</strong>
adjList = [[]]
<strong>
输出:
</strong>
[[]]
<strong>
解释:
</strong>
输入包含一个空列表。该图仅仅只有一个值为 1 的节点,它没有任何邻居。
</pre>
<p><strong>
示例 3:
</strong></p>
<pre><strong>
输入:
</strong>
adjList = []
<strong>
输出:
</strong>
[]
<strong>
解释:
</strong>
这个图是空的,它不含任何节点。
</pre>
...
...
@@ -56,6 +70,7 @@
<p><img
alt=
""
src=
"https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/02/01/graph-1.png"
style=
"height: 133px; width: 272px;"
></p>
<pre><strong>
输入:
</strong>
adjList = [[2],[1]]
<strong>
输出:
</strong>
[[2],[1]]
</pre>
<p>
</p>
...
...
data/3.算法高阶/3.leetcode-图与搜索/3.332-重新安排行程/solution.md
浏览文件 @
f3c2d242
...
...
@@ -16,14 +16,18 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/03/14/itinerary1-graph.jpg"
style=
"width: 382px; height: 222px;"
/>
<pre>
<strong>
输入:
</strong>
tickets = [["MUC","LHR"],["JFK","MUC"],["SFO","SJC"],["LHR","SFO"]]
<strong>
输出:
</strong>
["JFK","MUC","LHR","SFO","SJC"]
</pre>
<p><strong>
示例 2:
</strong></p>
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/03/14/itinerary2-graph.jpg"
style=
"width: 222px; height: 230px;"
/>
<pre>
<strong>
输入:
</strong>
tickets = [["JFK","SFO"],["JFK","ATL"],["SFO","ATL"],["ATL","JFK"],["ATL","SFO"]]
<strong>
输出:
</strong>
["JFK","ATL","JFK","SFO","ATL","SFO"]
<strong>
解释:
</strong>
另一种有效的行程是 ["JFK","SFO","ATL","JFK","ATL","SFO"] ,但是它字典排序更大更靠后。
</pre>
...
...
data/3.算法高阶/3.leetcode-图与搜索/4.207-课程表/solution.md
浏览文件 @
f3c2d242
...
...
@@ -16,14 +16,18 @@
<pre>
<strong>
输入:
</strong>
numCourses = 2, prerequisites = [[1,0]]
<strong>
输出:
</strong>
true
<strong>
解释:
</strong>
总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
numCourses = 2, prerequisites = [[1,0],[0,1]]
<strong>
输出:
</strong>
false
<strong>
解释:
</strong>
总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0 ;并且学习课程 0 之前,你还应先完成课程 1 。这是不可能的。
</pre>
<p>
</p>
...
...
data/3.算法高阶/3.leetcode-图与搜索/5.329-矩阵中的最长递增路径/solution.md
浏览文件 @
f3c2d242
...
...
@@ -10,14 +10,18 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/01/05/grid1.jpg"
style=
"width: 242px; height: 242px;"
/>
<pre>
<strong>
输入:
</strong>
matrix = [[9,9,4],[6,6,8],[2,1,1]]
<strong>
输出:
</strong>
4
<strong>
解释:
</strong>
最长递增路径为
<code>
[1, 2, 6, 9]
</code>
。
</pre>
<p><strong>
示例 2:
</strong></p>
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/01/27/tmp-grid.jpg"
style=
"width: 253px; height: 253px;"
/>
<pre>
<strong>
输入:
</strong>
matrix = [[3,4,5],[3,2,6],[2,2,1]]
<strong>
输出:
</strong>
4
<strong>
解释:
</strong>
最长递增路径是
<code>
[3, 4, 5, 6]
</code>
。注意不允许在对角线方向上移动。
</pre>
...
...
@@ -25,6 +29,7 @@
<pre>
<strong>
输入:
</strong>
matrix = [[1]]
<strong>
输出:
</strong>
1
</pre>
...
...
data/3.算法高阶/3.leetcode-图与搜索/6.210-课程表 II/solution.md
浏览文件 @
f3c2d242
...
...
@@ -14,7 +14,9 @@
<pre>
<strong>
输入:
</strong>
numCourses = 2, prerequisites = [[1,0]]
<strong>
输出:
</strong>
[0,1]
<strong>
解释:
</strong>
总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为
<code>
[0,1] 。
</code>
</pre>
...
...
@@ -22,14 +24,18 @@
<pre>
<strong>
输入:
</strong>
numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]]
<strong>
输出:
</strong>
[0,2,1,3]
<strong>
解释:
</strong>
总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。
因此,一个正确的课程顺序是
<code>
[0,1,2,3]
</code>
。另一个正确的排序是
<code>
[0,2,1,3]
</code>
。
</pre>
<p><strong>
示例 3:
</strong></p>
<pre>
<strong>
输入:
</strong>
numCourses = 1, prerequisites = []
<strong>
输出:
</strong>
[0]
</pre>
...
...
data/3.算法高阶/3.leetcode-图与搜索/8.112-路径总和/solution.md
浏览文件 @
f3c2d242
...
...
@@ -10,6 +10,7 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/01/18/pathsum1.jpg"
style=
"width: 500px; height: 356px;"
/>
<pre>
<strong>
输入:
</strong>
root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
<strong>
输出:
</strong>
true
</pre>
...
...
@@ -17,6 +18,7 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/01/18/pathsum2.jpg"
/>
<pre>
<strong>
输入:
</strong>
root = [1,2,3], targetSum = 5
<strong>
输出:
</strong>
false
</pre>
...
...
@@ -24,6 +26,7 @@
<pre>
<strong>
输入:
</strong>
root = [1,2], targetSum = 0
<strong>
输出:
</strong>
false
</pre>
...
...
data/3.算法高阶/3.leetcode-图与搜索/9.113-路径总和 II/solution.md
浏览文件 @
f3c2d242
...
...
@@ -12,6 +12,7 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/01/18/pathsumii1.jpg"
style=
"width: 500px; height: 356px;"
/>
<pre>
<strong>
输入:
</strong>
root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
<strong>
输出:
</strong>
[[5,4,11,2],[5,8,4,5]]
</pre>
...
...
@@ -19,6 +20,7 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2021/01/18/pathsum2.jpg"
style=
"width: 212px; height: 181px;"
/>
<pre>
<strong>
输入:
</strong>
root = [1,2,3], targetSum = 5
<strong>
输出:
</strong>
[]
</pre>
...
...
@@ -26,6 +28,7 @@
<pre>
<strong>
输入:
</strong>
root = [1,2], targetSum = 0
<strong>
输出:
</strong>
[]
</pre>
...
...
data/3.算法高阶/5.leetcode-设计/1.355-设计推特/solution.md
浏览文件 @
f3c2d242
...
...
@@ -18,19 +18,31 @@
<pre>
<strong>
输入
</strong>
["Twitter", "postTweet", "getNewsFeed", "follow", "postTweet", "getNewsFeed", "unfollow", "getNewsFeed"]
[[], [1, 5], [1], [1, 2], [2, 6], [1], [1, 2], [1]]
<strong>
输出
</strong>
[null, null, [5], null, null, [6, 5], null, [5]]
<strong>
解释
</strong>
Twitter twitter = new Twitter();
twitter.postTweet(1, 5); // 用户 1 发送了一条新推文 (用户 id = 1, 推文 id = 5)
twitter.getNewsFeed(1); // 用户 1 的获取推文应当返回一个列表,其中包含一个 id 为 5 的推文
twitter.follow(1, 2); // 用户 1 关注了用户 2
twitter.postTweet(2, 6); // 用户 2 发送了一个新推文 (推文 id = 6)
twitter.getNewsFeed(1); // 用户 1 的获取推文应当返回一个列表,其中包含两个推文,id 分别为 -
>
[6, 5] 。推文 id 6 应当在推文 id 5 之前,因为它是在 5 之后发送的
twitter.unfollow(1, 2); // 用户 1 取消关注了用户 2
twitter.getNewsFeed(1); // 用户 1 获取推文应当返回一个列表,其中包含一个 id 为 5 的推文。因为用户 1 已经不再关注用户 2
</pre>
<p>
</p>
...
...
data/3.算法高阶/5.leetcode-设计/10.297-二叉树的序列化与反序列化/solution.md
浏览文件 @
f3c2d242
...
...
@@ -12,6 +12,7 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2020/09/15/serdeser.jpg"
style=
"width: 442px; height: 324px;"
/>
<pre>
<strong>
输入:
</strong>
root = [1,2,3,null,null,4,5]
<strong>
输出:
</strong>
[1,2,3,null,null,4,5]
</pre>
...
...
@@ -19,6 +20,7 @@
<pre>
<strong>
输入:
</strong>
root = []
<strong>
输出:
</strong>
[]
</pre>
...
...
@@ -26,6 +28,7 @@
<pre>
<strong>
输入:
</strong>
root = [1]
<strong>
输出:
</strong>
[1]
</pre>
...
...
@@ -33,6 +36,7 @@
<pre>
<strong>
输入:
</strong>
root = [1,2]
<strong>
输出:
</strong>
[1,2]
</pre>
...
...
data/3.算法高阶/5.leetcode-设计/2.380-O(1) 时间插入、删除和获取随机元素/solution.md
浏览文件 @
f3c2d242
...
...
@@ -19,20 +19,33 @@
<pre>
<strong>
输入
</strong>
["RandomizedSet", "insert", "remove", "insert", "getRandom", "remove", "insert", "getRandom"]
[[], [1], [2], [2], [], [1], [2], []]
<strong>
输出
</strong>
[null, true, false, true, 2, true, false, 2]
<strong>
解释
</strong>
RandomizedSet randomizedSet = new RandomizedSet();
randomizedSet.insert(1); // 向集合中插入 1 。返回 true 表示 1 被成功地插入。
randomizedSet.remove(2); // 返回 false ,表示集合中不存在 2 。
randomizedSet.insert(2); // 向集合中插入 2 。返回 true 。集合现在包含 [1,2] 。
randomizedSet.getRandom(); // getRandom 应随机返回 1 或 2 。
randomizedSet.remove(1); // 从集合中移除 1 ,返回 true 。集合现在包含 [2] 。
randomizedSet.insert(2); // 2 已在集合中,所以返回 false 。
randomizedSet.getRandom(); // 由于 2 是集合中唯一的数字,getRandom 总是返回 2 。
</pre>
<p>
</p>
...
...
data/3.算法高阶/5.leetcode-设计/3.381-O(1) 时间插入、删除和获取随机元素 - 允许重复/solution.md
浏览文件 @
f3c2d242
...
...
@@ -13,25 +13,33 @@
<p><strong>
示例:
</strong></p>
<pre>
// 初始化一个空的集合。
RandomizedCollection collection = new RandomizedCollection();
// 向集合中插入 1 。返回 true 表示集合不包含 1 。
collection.insert(1);
// 向集合中插入另一个 1 。返回 false 表示集合包含 1 。集合现在包含 [1,1] 。
collection.insert(1);
// 向集合中插入 2 ,返回 true 。集合现在包含 [1,1,2] 。
collection.insert(2);
// getRandom 应当有 2/3 的概率返回 1 ,1/3 的概率返回 2 。
collection.getRandom();
// 从集合中删除 1 ,返回 true 。集合现在包含 [1,2] 。
collection.remove(1);
// getRandom 应有相同概率返回 1 和 2 。
collection.getRandom();
</pre>
<p>
以下
<span
style=
"color:red"
>
错误
</span>
的选项是?
</p>
...
...
data/3.算法高阶/5.leetcode-设计/4.460-LFU 缓存/solution.md
浏览文件 @
f3c2d242
...
...
@@ -22,30 +22,53 @@
<pre>
<strong>
输入:
</strong>
["LFUCache", "put", "put", "get", "put", "get", "get", "put", "get", "get", "get"]
[[2], [1, 1], [2, 2], [1], [3, 3], [2], [3], [4, 4], [1], [3], [4]]
<strong>
输出:
</strong>
[null, null, null, 1, null, -1, 3, null, -1, 3, 4]
<strong>
解释:
</strong>
// cnt(x) = 键 x 的使用计数
// cache=[] 将显示最后一次使用的顺序(最左边的元素是最近的)
LFUCache lFUCache = new LFUCache(2);
lFUCache.put(1, 1); // cache=[1,_], cnt(1)=1
lFUCache.put(2, 2); // cache=[2,1], cnt(2)=1, cnt(1)=1
lFUCache.get(1); // 返回 1
// cache=[1,2], cnt(2)=1, cnt(1)=2
lFUCache.put(3, 3); // 去除键 2 ,因为 cnt(2)=1 ,使用计数最小
// cache=[3,1], cnt(3)=1, cnt(1)=2
lFUCache.get(2); // 返回 -1(未找到)
lFUCache.get(3); // 返回 3
// cache=[3,1], cnt(3)=2, cnt(1)=2
lFUCache.put(4, 4); // 去除键 1 ,1 和 3 的 cnt 相同,但 1 最久未使用
// cache=[4,3], cnt(4)=1, cnt(3)=2
lFUCache.get(1); // 返回 -1(未找到)
lFUCache.get(3); // 返回 3
// cache=[3,4], cnt(4)=1, cnt(3)=3
lFUCache.get(4); // 返回 4
// cache=[3,4], cnt(4)=2, cnt(3)=3</pre>
<p>
</p>
...
...
data/3.算法高阶/5.leetcode-设计/5.146-LRU 缓存机制/solution.md
浏览文件 @
f3c2d242
...
...
@@ -24,22 +24,37 @@
<pre>
<strong>
输入
</strong>
["LRUCache", "put", "put", "get", "put", "get", "put", "get", "get", "get"]
[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]
<strong>
输出
</strong>
[null, null, null, 1, null, -1, null, -1, 3, 4]
<strong>
解释
</strong>
LRUCache lRUCache = new LRUCache(2);
lRUCache.put(1, 1); // 缓存是 {1=1}
lRUCache.put(2, 2); // 缓存是 {1=1, 2=2}
lRUCache.get(1); // 返回 1
lRUCache.put(3, 3); // 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}
lRUCache.get(2); // 返回 -1 (未找到)
lRUCache.put(4, 4); // 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}
lRUCache.get(1); // 返回 -1 (未找到)
lRUCache.get(3); // 返回 3
lRUCache.get(4); // 返回 4
</pre>
<p>
</p>
...
...
data/3.算法高阶/5.leetcode-设计/6.173-二叉搜索树迭代器/solution.md
浏览文件 @
f3c2d242
...
...
@@ -21,21 +21,35 @@
<img
alt=
""
src=
"https://assets.leetcode.com/uploads/2018/12/25/bst-tree.png"
style=
"width: 189px; height: 178px;"
/>
<pre>
<strong>
输入
</strong>
["BSTIterator", "next", "next", "hasNext", "next", "hasNext", "next", "hasNext", "next", "hasNext"]
[[[7, 3, 15, null, null, 9, 20]], [], [], [], [], [], [], [], [], []]
<strong>
输出
</strong>
[null, 3, 7, true, 9, true, 15, true, 20, false]
<strong>
解释
</strong>
BSTIterator bSTIterator = new BSTIterator([7, 3, 15, null, null, 9, 20]);
bSTIterator.next(); // 返回 3
bSTIterator.next(); // 返回 7
bSTIterator.hasNext(); // 返回 True
bSTIterator.next(); // 返回 9
bSTIterator.hasNext(); // 返回 True
bSTIterator.next(); // 返回 15
bSTIterator.hasNext(); // 返回 True
bSTIterator.next(); // 返回 20
bSTIterator.hasNext(); // 返回 False
</pre>
...
...
data/3.算法高阶/5.leetcode-设计/7.208-实现 Trie (前缀树)/solution.md
浏览文件 @
f3c2d242
...
...
@@ -17,19 +17,31 @@
<pre>
<strong>
输入
</strong>
["Trie", "insert", "search", "search", "startsWith", "insert", "search"]
[[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]
<strong>
输出
</strong>
[null, null, true, false, true, null, true]
<strong>
解释
</strong>
Trie trie = new Trie();
trie.insert("apple");
trie.search("apple"); // 返回 True
trie.search("app"); // 返回 False
trie.startsWith("app"); // 返回 True
trie.insert("app");
trie.search("app"); // 返回 True
</pre>
<p>
</p>
...
...
data/3.算法高阶/5.leetcode-设计/9.341-扁平化嵌套列表迭代器/solution.md
浏览文件 @
f3c2d242
...
...
@@ -13,10 +13,15 @@
<p>
你的代码将会用下述伪代码检测:
</p>
<pre>
initialize iterator with nestedList
res = []
while iterator.hasNext()
append iterator.next() to the end of res
return res
</pre>
<p>
如果
<code>
res
</code>
与预期的扁平化列表匹配,那么你的代码将会被判为正确。
</p>
...
...
@@ -27,14 +32,18 @@ return res</pre>
<pre>
<strong>
输入:
</strong>
nestedList = [[1,1],2,[1,1]]
<strong>
输出:
</strong>
[1,1,2,1,1]
<strong>
解释:
</strong>
通过重复调用
<em>
next
</em>
直到
<em>
hasNex
</em>
t 返回 false,
<em>
next
</em>
返回的元素的顺序应该是:
<code>
[1,1,2,1,1]
</code>
。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入:
</strong>
nestedList = [1,[4,[6]]]
<strong>
输出:
</strong>
[1,4,6]
<strong>
解释:
</strong>
通过重复调用
<em>
next
</em>
直到
<em>
hasNex
</em>
t 返回 false,
<em>
next
</em>
返回的元素的顺序应该是:
<code>
[1,4,6]
</code>
。
</pre>
...
...
data/3.算法高阶/8.leetcode-贪心/1.122-买卖股票的最佳时机 II/solution.md
浏览文件 @
f3c2d242
...
...
@@ -12,8 +12,11 @@
<pre>
<strong>
输入:
</strong>
prices = [7,1,5,3,6,4]
<strong>
输出:
</strong>
7
<strong>
解释:
</strong>
在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
</pre>
...
...
@@ -21,8 +24,11 @@
<pre>
<strong>
输入:
</strong>
prices = [1,2,3,4,5]
<strong>
输出:
</strong>
4
<strong>
解释:
</strong>
在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
</pre>
...
...
@@ -30,7 +36,9 @@
<pre>
<strong>
输入:
</strong>
prices = [7,6,4,3,1]
<strong>
输出:
</strong>
0
<strong>
解释:
</strong>
在这种情况下, 没有交易完成, 所以最大利润为 0。
</pre>
<p>
</p>
...
...
data/3.算法高阶/8.leetcode-贪心/10.330-按要求补齐数组/solution.md
浏览文件 @
f3c2d242
...
...
@@ -5,23 +5,33 @@
<p><strong>
示例
1:
</strong></p>
<pre><strong>
输入:
</strong><em>
nums
</em>
=
<code>
[1,3]
</code>
,
<em>
n
</em>
=
<code>
6
</code>
<strong>
输出:
</strong>
1
<strong>
解释:
</strong>
根据
<em>
nums
</em>
里现有的组合
<code>
[1], [3], [1,3]
</code>
,可以得出
<code>
1, 3, 4
</code>
。
现在如果我们将
<code>
2
</code>
添加到
<em>
nums 中,
</em>
组合变为:
<code>
[1], [2], [3], [1,3], [2,3], [1,2,3]
</code>
。
其和可以表示数字
<code>
1, 2, 3, 4, 5, 6
</code>
,能够覆盖
<code>
[1, 6]
</code>
区间里所有的数。
所以我们最少需要添加一个数字。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre><strong>
输入:
</strong><em>
nums
</em>
=
<code>
[1,5,10]
</code>
,
<em>
n
</em>
=
<code>
20
</code>
<strong>
输出:
</strong>
2
<strong>
解释:
</strong>
我们需要添加
<code>
[2, 4]
</code>
。
</pre>
<p><strong>
示例
3:
</strong></p>
<pre><strong>
输入:
</strong><em>
nums
</em>
=
<code>
[1,2,2]
</code>
,
<em>
n
</em>
=
<code>
5
</code>
<strong>
输出:
</strong>
0
</pre>
...
...
data/3.算法高阶/8.leetcode-贪心/4.135-分发糖果/solution.md
浏览文件 @
f3c2d242
...
...
@@ -17,7 +17,9 @@
<pre>
<strong>
输入:
</strong>
[1,0,2]
<strong>
输出:
</strong>
5
<strong>
解释:
</strong>
你可以分别给这三个孩子分发 2、1、2 颗糖果。
</pre>
...
...
@@ -25,8 +27,11 @@
<pre>
<strong>
输入:
</strong>
[1,2,2]
<strong>
输出:
</strong>
4
<strong>
解释:
</strong>
你可以分别给这三个孩子分发 1、2、1 颗糖果。
第三个孩子只得到 1 颗糖果,这已满足上述两个条件。</pre>
<p>
以下
<span
style=
"color:red"
>
错误
</span>
的选项是?
</p>
...
...
data/3.算法高阶/8.leetcode-贪心/6.134-加油站/solution.md
浏览文件 @
f3c2d242
...
...
@@ -17,34 +17,51 @@
<p><strong>
示例
1:
</strong></p>
<pre><strong>
输入:
</strong>
gas = [1,2,3,4,5]
cost = [3,4,5,1,2]
<strong>
输出:
</strong>
3
<strong>
解释:
</strong>
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此,3 可为起始索引。
</pre>
<p><strong>
示例 2:
</strong></p>
<pre><strong>
输入:
</strong>
gas = [2,3,4]
cost = [3,4,3]
<strong>
输出:
</strong>
-1
<strong>
解释:
</strong>
你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。
我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油
开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油
开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。
因此,无论怎样,你都不可能绕环路行驶一周。
</pre>
<p>
以下
<span
style=
"color:red"
>
错误
</span>
的选项是?
</p>
...
...
data/3.算法高阶/8.leetcode-贪心/7.179-最大数/solution.md
浏览文件 @
f3c2d242
...
...
@@ -10,12 +10,14 @@
<pre>
<strong>
输入
<code>
:
</code></strong><code>
nums = [10,2]
</code>
<strong>
输出:
</strong><code>
"210"
</code></pre>
<p><strong>
示例 2:
</strong></p>
<pre>
<strong>
输入
<code>
:
</code></strong><code>
nums = [3,30,34,5,9]
</code>
<strong>
输出:
</strong><code>
"9534330"
</code>
</pre>
...
...
@@ -23,6 +25,7 @@
<pre>
<strong>
输入
<code>
:
</code></strong>
nums = [1]
<strong>
输出:
</strong>
"1"
</pre>
...
...
@@ -30,6 +33,7 @@
<pre>
<strong>
输入
<code>
:
</code></strong>
nums = [10]
<strong>
输出:
</strong>
"10"
</pre>
...
...
data/3.算法高阶/8.leetcode-贪心/8.316-去除重复字母/solution.md
浏览文件 @
f3c2d242
...
...
@@ -10,6 +10,7 @@
<pre>
<strong>
输入:
</strong><code>
s = "bcabc"
</code>
<strong>
输出
<code>
:
</code></strong><code>
"abc"
</code>
</pre>
...
...
@@ -17,6 +18,7 @@
<pre>
<strong>
输入:
</strong><code>
s = "cbacdcbc"
</code>
<strong>
输出:
</strong><code>
"acdb"
</code></pre>
<p>
</p>
...
...
data/3.算法高阶/8.leetcode-贪心/9.321-拼接最大数/solution.md
浏览文件 @
f3c2d242
...
...
@@ -9,28 +9,43 @@
<p><strong>
示例
1:
</strong></p>
<pre><strong>
输入:
</strong>
nums1 =
<code>
[3, 4, 6, 5]
</code>
nums2 =
<code>
[9, 1, 2, 5, 8, 3]
</code>
k =
<code>
5
</code>
<strong>
输出:
</strong>
<code>
[9, 8, 6, 5, 3]
</code></pre>
<p><strong>
示例 2:
</strong></p>
<pre><strong>
输入:
</strong>
nums1 =
<code>
[6, 7]
</code>
nums2 =
<code>
[6, 0, 4]
</code>
k =
<code>
5
</code>
<strong>
输出:
</strong>
<code>
[6, 7, 6, 0, 4]
</code></pre>
<p><strong>
示例 3:
</strong></p>
<pre><strong>
输入:
</strong>
nums1 =
<code>
[3, 9]
</code>
nums2 =
<code>
[8, 9]
</code>
k =
<code>
3
</code>
<strong>
输出:
</strong>
<code>
[9, 8, 9]
</code></pre>
<p>
以下
<span
style=
"color:red"
>
错误
</span>
的选项是?
</p>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录