mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 15:09:40 +08:00
Update
This commit is contained in:
@ -295,7 +295,8 @@
|
||||
21. [本周小结!(贪心算法系列四)](./problems/周总结/20201224贪心周末总结.md)
|
||||
22. [贪心算法:738.单调递增的数字](./problems/0738.单调递增的数字.md)
|
||||
23. [贪心算法:968.监控二叉树](./problems/0968.监控二叉树.md)
|
||||
24. [贪心算法:总结篇!(每逢总结必经典)](./problems/贪心算法总结篇.md)
|
||||
24. [贪心算法:714.买卖股票的最佳时机含手续费](./problems/0714.买卖股票的最佳时机含手续费.md)
|
||||
25. [贪心算法:总结篇!(每逢总结必经典)](./problems/贪心算法总结篇.md)
|
||||
|
||||
## 动态规划
|
||||
|
||||
|
@ -18,15 +18,15 @@
|
||||
注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。
|
||||
|
||||
示例 1:
|
||||
输入: prices = [1, 3, 2, 8, 4, 9], fee = 2
|
||||
输出: 8
|
||||
* 输入: prices = [1, 3, 2, 8, 4, 9], fee = 2
|
||||
* 输出: 8
|
||||
|
||||
解释: 能够达到的最大利润:
|
||||
在此处买入 prices[0] = 1
|
||||
在此处卖出 prices[3] = 8
|
||||
在此处买入 prices[4] = 4
|
||||
在此处卖出 prices[5] = 9
|
||||
总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8.
|
||||
* 在此处买入 prices[0] = 1
|
||||
* 在此处卖出 prices[3] = 8
|
||||
* 在此处买入 prices[4] = 4
|
||||
* 在此处卖出 prices[5] = 9
|
||||
* 总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8.
|
||||
|
||||
注意:
|
||||
* 0 < prices.length <= 50000.
|
||||
@ -35,6 +35,8 @@
|
||||
|
||||
## 思路
|
||||
|
||||
本题优先掌握动态规划解法,在动态规划章节中,还会详细讲解本题。
|
||||
|
||||
本题相对于[贪心算法:122.买卖股票的最佳时机II](https://programmercarl.com/0122.买卖股票的最佳时机II.html),多添加了一个条件就是手续费。
|
||||
|
||||
## 贪心算法
|
||||
|
@ -152,11 +152,11 @@ if (left == 2 && right == 2) return 0;
|
||||
|
||||
如果是以下情况,则中间节点(父节点)应该放摄像头:
|
||||
|
||||
left == 0 && right == 0 左右节点无覆盖
|
||||
left == 1 && right == 0 左节点有摄像头,右节点无覆盖
|
||||
left == 0 && right == 1 左节点有无覆盖,右节点摄像头
|
||||
left == 0 && right == 2 左节点无覆盖,右节点覆盖
|
||||
left == 2 && right == 0 左节点覆盖,右节点无覆盖
|
||||
* left == 0 && right == 0 左右节点无覆盖
|
||||
* left == 1 && right == 0 左节点有摄像头,右节点无覆盖
|
||||
* left == 0 && right == 1 左节点有无覆盖,右节点摄像头
|
||||
* left == 0 && right == 2 左节点无覆盖,右节点覆盖
|
||||
* left == 2 && right == 0 左节点覆盖,右节点无覆盖
|
||||
|
||||
这个不难理解,毕竟有一个孩子没有覆盖,父节点就应该放摄像头。
|
||||
|
||||
@ -174,9 +174,9 @@ if (left == 0 || right == 0) {
|
||||
|
||||
如果是以下情况,其实就是 左右孩子节点有一个有摄像头了,那么其父节点就应该是2(覆盖的状态)
|
||||
|
||||
left == 1 && right == 2 左节点有摄像头,右节点有覆盖
|
||||
left == 2 && right == 1 左节点有覆盖,右节点有摄像头
|
||||
left == 1 && right == 1 左右节点都有摄像头
|
||||
* left == 1 && right == 2 左节点有摄像头,右节点有覆盖
|
||||
* left == 2 && right == 1 左节点有覆盖,右节点有摄像头
|
||||
* left == 1 && right == 1 左右节点都有摄像头
|
||||
|
||||
代码如下:
|
||||
|
||||
@ -298,7 +298,7 @@ public:
|
||||
|
||||
大家可能会惊讶,居然可以这么简短,**其实就是在版本一的基础上,使用else把一些情况直接覆盖掉了**。
|
||||
|
||||
在网上关于这道题解可以搜到很多这种神级别的代码,但都没讲不清楚,如果直接看代码的话,指定越看越晕,**所以建议大家对着版本一的代码一步一步来哈,版本二中看不中用!**。
|
||||
在网上关于这道题解可以搜到很多这种神级别的代码,但都没讲不清楚,如果直接看代码的话,指定越看越晕,**所以建议大家对着版本一的代码一步一步来,版本二中看不中用!**。
|
||||
|
||||
## 总结
|
||||
|
||||
@ -306,9 +306,7 @@ public:
|
||||
|
||||
在二叉树上进行状态推导,其实难度就上了一个台阶了,需要对二叉树的操作非常娴熟。
|
||||
|
||||
这道题目是名副其实的hard,大家感受感受,哈哈。
|
||||
|
||||
|
||||
这道题目是名副其实的hard,大家感受感受。
|
||||
|
||||
## 其他语言版本
|
||||
|
||||
|
@ -73,7 +73,7 @@ Carl个人认为:如果找出局部最优并可以推出全局最优,就是
|
||||
大家都知道股票系列问题是动规的专长,其实用贪心也可以解决,而且还不止就这两道题目,但这两道比较典型,我就拿来单独说一说
|
||||
|
||||
* [贪心算法:买卖股票的最佳时机II](https://programmercarl.com/0122.买卖股票的最佳时机II.html)
|
||||
* [贪心算法:买卖股票的最佳时机含手续费](https://programmercarl.com/0714.买卖股票的最佳时机含手续费.html)
|
||||
* [贪心算法:买卖股票的最佳时机含手续费](https://programmercarl.com/0714.买卖股票的最佳时机含手续费.html) 本题使用贪心算法比较绕,建议理解动态规划就好
|
||||
|
||||
### 两个维度权衡问题
|
||||
|
||||
|
Reference in New Issue
Block a user