This commit is contained in:
programmercarl
2023-02-10 10:09:04 +08:00
parent f108f864ca
commit 6884c44f72
4 changed files with 22 additions and 21 deletions

View File

@ -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)
## 动态规划

View File

@ -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)多添加了一个条件就是手续费
## 贪心算法

View File

@ -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大家感受感受。
## 其他语言版本

View File

@ -73,7 +73,7 @@ Carl个人认为如果找出局部最优并可以推出全局最优就是
大家都知道股票系列问题是动规的专长,其实用贪心也可以解决,而且还不止就这两道题目,但这两道比较典型,我就拿来单独说一说
* [贪心算法买卖股票的最佳时机II](https://programmercarl.com/0122.买卖股票的最佳时机II.html)
* [贪心算法:买卖股票的最佳时机含手续费](https://programmercarl.com/0714.买卖股票的最佳时机含手续费.html)
* [贪心算法:买卖股票的最佳时机含手续费](https://programmercarl.com/0714.买卖股票的最佳时机含手续费.html) 本题使用贪心算法比较绕,建议理解动态规划就好
### 两个维度权衡问题