From 6884c44f7238f730824f65d150c17376bc456158 Mon Sep 17 00:00:00 2001 From: programmercarl <826123027@qq.com> Date: Fri, 10 Feb 2023 10:09:04 +0800 Subject: [PATCH] Update --- README.md | 3 ++- ...买卖股票的最佳时机含手续费.md | 16 ++++++++------ problems/0968.监控二叉树.md | 22 +++++++++---------- problems/贪心算法总结篇.md | 2 +- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 11b63acc..c6d6bfe2 100644 --- a/README.md +++ b/README.md @@ -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) ## 动态规划 diff --git a/problems/0714.买卖股票的最佳时机含手续费.md b/problems/0714.买卖股票的最佳时机含手续费.md index 3f44ec17..d0a5360c 100644 --- a/problems/0714.买卖股票的最佳时机含手续费.md +++ b/problems/0714.买卖股票的最佳时机含手续费.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),多添加了一个条件就是手续费。 ## 贪心算法 diff --git a/problems/0968.监控二叉树.md b/problems/0968.监控二叉树.md index d897755b..92212ebb 100644 --- a/problems/0968.监控二叉树.md +++ b/problems/0968.监控二叉树.md @@ -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,大家感受感受。 ## 其他语言版本 diff --git a/problems/贪心算法总结篇.md b/problems/贪心算法总结篇.md index d70eecaa..1a516e5f 100644 --- a/problems/贪心算法总结篇.md +++ b/problems/贪心算法总结篇.md @@ -73,7 +73,7 @@ Carl个人认为:如果找出局部最优并可以推出全局最优,就是 大家都知道股票系列问题是动规的专长,其实用贪心也可以解决,而且还不止就这两道题目,但这两道比较典型,我就拿来单独说一说 * [贪心算法:买卖股票的最佳时机II](https://programmercarl.com/0122.买卖股票的最佳时机II.html) -* [贪心算法:买卖股票的最佳时机含手续费](https://programmercarl.com/0714.买卖股票的最佳时机含手续费.html) +* [贪心算法:买卖股票的最佳时机含手续费](https://programmercarl.com/0714.买卖股票的最佳时机含手续费.html) 本题使用贪心算法比较绕,建议理解动态规划就好 ### 两个维度权衡问题