Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
兴科Sinco
Fucking Algorithm
提交
06350ad8
F
Fucking Algorithm
项目概览
兴科Sinco
/
Fucking Algorithm
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Fucking Algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
06350ad8
编写于
3月 03, 2023
作者:
L
labuladong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update content
上级
60bb5a59
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
12 addition
and
6 deletion
+12
-6
README.md
README.md
+0
-1
动态规划系列/动态规划设计:最长递增子序列.md
动态规划系列/动态规划设计:最长递增子序列.md
+2
-2
动态规划系列/团灭股票问题.md
动态规划系列/团灭股票问题.md
+2
-0
动态规划系列/高楼扔鸡蛋问题.md
动态规划系列/高楼扔鸡蛋问题.md
+3
-1
数据结构系列/递归反转链表的一部分.md
数据结构系列/递归反转链表的一部分.md
+1
-0
高频面试系列/k个一组反转链表.md
高频面试系列/k个一组反转链表.md
+4
-2
未找到文件。
README.md
浏览文件 @
06350ad8
...
...
@@ -201,7 +201,6 @@ Gitee Pages 地址:https://labuladong.gitee.io/algo/
*
[
经典动态规划:四键键盘
](
https://labuladong.github.io/article/fname.html?fname=动态规划之四键键盘
)
*
[
一个方法团灭 LeetCode 打家劫舍问题
](
https://labuladong.github.io/article/fname.html?fname=抢房子
)
*
[
一个方法团灭 LeetCode 股票买卖问题
](
https://labuladong.github.io/article/fname.html?fname=团灭股票问题
)
*
[
有限状态机之 KMP 字符匹配算法
](
https://labuladong.github.io/article/fname.html?fname=动态规划之KMP字符匹配算法
)
*
[
贪心类型问题
](
https://labuladong.github.io/algo/
)
*
[
贪心算法之区间调度问题
](
https://labuladong.github.io/article/fname.html?fname=贪心算法之区间调度问题
)
...
...
动态规划系列/动态规划设计:最长递增子序列.md
浏览文件 @
06350ad8
...
...
@@ -249,11 +249,11 @@ int lengthOfLIS(int[] nums) {
![](
https://labuladong.gitee.io/pictures/信封嵌套/2.jpg
)
为什么呢
?稍微思考一下就明白了:
**那么为什么这样就可以找到可以互相嵌套的信封序列呢**
?稍微思考一下就明白了:
首先,对宽度
`w`
从小到大排序,确保了
`w`
这个维度可以互相嵌套,所以我们只需要专注高度
`h`
这个维度能够互相嵌套即可。
其次,两个
`w`
相同的信封不能相互包含,所以对于宽度
`w`
相同的信封,对高度
`h`
进行降序排序,保证 LIS 中不存在多个
`w`
相同的信封(因为题目说了长宽相同也无法嵌套)。
其次,两个
`w`
相同的信封不能相互包含,所以对于宽度
`w`
相同的信封,对高度
`h`
进行降序排序,保证
二维
LIS 中不存在多个
`w`
相同的信封(因为题目说了长宽相同也无法嵌套)。
下面看解法代码:
...
...
动态规划系列/团灭股票问题.md
浏览文件 @
06350ad8
...
...
@@ -79,6 +79,8 @@ for 状态1 in 状态1的所有取值:
但问题是,并不是每天都可以任意选择这三种选择的,因为
`sell`
必须在
`buy`
之后,
`buy`
必须在
`sell`
之后。那么
`rest`
操作还应该分两种状态,一种是
`buy`
之后的
`rest`
(持有了股票),一种是
`sell`
之后的
`rest`
(没有持有股票)。而且别忘了,我们还有交易次数
`k`
的限制,就是说你
`buy`
还只能在
`k > 0`
的前提下操作。
> note:注意我在本文会频繁使用「交易」这个词,**我们把一次买入和一次卖出定义为一次「交易」**。
很复杂对吧,不要怕,我们现在的目的只是穷举,你有再多的状态,老夫要做的就是一把梭全部列举出来。
**这个问题的「状态」有三个**
,第一个是天数,第二个是允许交易的最大次数,第三个是当前的持有状态(即之前说的
`rest`
的状态,我们不妨用 1 表示持有,0 表示没有持有)。然后我们用一个三维数组就可以装下这几种状态的全部组合:
...
...
动态规划系列/高楼扔鸡蛋问题.md
浏览文件 @
06350ad8
...
...
@@ -55,7 +55,9 @@
实际上,如果不限制鸡蛋个数的话,二分思路显然可以得到最少尝试的次数,但问题是,
**现在给你了鸡蛋个数的限制 `K`,直接使用二分思路就不行了**
。
比如说只给你 1 个鸡蛋,7 层楼,你敢用二分吗?你直接去第 4 层扔一下,如果鸡蛋没碎还好,但如果碎了你就没有鸡蛋继续测试了,无法确定鸡蛋恰好摔不碎的楼层
`F`
了。这种情况下只能用线性扫描的方法,算法返回结果应该是 7。
比如说只给你 1 个鸡蛋,7 层楼,你敢用二分吗?你直接去第 4 层扔一下,如果鸡蛋没碎还好,你可以把鸡蛋捡起来再去更高的楼层尝试;但如果碎了,你就没有鸡蛋继续测试了,无法确定鸡蛋恰好摔不碎的楼层
`F`
了。
其实这种情况下只能用线性扫描的方法,从下网上一层层尝试扔鸡蛋,那么最坏情况下需要扔 7 次,算法返回结果应该是 7。
有的读者也许会有这种想法:二分查找排除楼层的速度无疑是最快的,那干脆先用二分查找,等到只剩 1 个鸡蛋的时候再执行线性扫描,这样得到的结果是不是就是最少的扔鸡蛋次数呢?
...
...
数据结构系列/递归反转链表的一部分.md
浏览文件 @
06350ad8
...
...
@@ -229,6 +229,7 @@ ListNode reverseBetween(ListNode head, int m, int n) {
<details>
<summary><strong>
引用本文的文章
</strong></summary>
-
[
如何 K 个一组反转链表
](
https://labuladong.github.io/article/fname.html?fname=k个一组反转链表
)
-
[
如何判断回文链表
](
https://labuladong.github.io/article/fname.html?fname=判断回文链表
)
-
[
烧饼排序算法
](
https://labuladong.github.io/article/fname.html?fname=烧饼排序
)
...
...
高频面试系列/k个一组反转链表.md
浏览文件 @
06350ad8
...
...
@@ -21,9 +21,11 @@
**-----------**
之前的文章
「递归反转链表的一部分」讲了如何递归地反转一部分链表,有读者就问如何迭代地反转链表,这篇文章解决的问题也需要反转链表的函数,我们不妨就用迭代方式来解决
。
之前的文章
[
递归反转链表的一部分
](
https://labuladong.github.io/article/fname.html?fname=递归反转链表的一部分
)
讲了如何递归地反转一部分链表,有读者就问如何迭代地反转链表,那么这篇文章的第一部分就会讲一讲如何用迭代方式解决反转单链表的问题
。
本文要解决力扣第 25 题「K 个一组翻转链表」,题目不难理解:
有了这个反转函数之后,我们还是会用递归的方式解决力扣第 25 题「K 个一组翻转链表」,所以检验你递归思维的时候到了,准备好了吗?
先看下题目,不难理解:
![](
https://labuladong.gitee.io/pictures/kgroup/title.png
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录