@@ -54,7 +54,7 @@ int maxProfit(vector<int>& prices) {
5454
5555这 6 道题目是有共性的,我们只需要抽出来力扣第 188 题「买卖股票的最佳时机 IV」进行研究,因为这道题是最泛化的形式,其他的问题都是这个形式的简化,看下题目:
5656
57- 
57+ <Problem slug="best-time-to-buy-and-sell-stock-iv" />
5858
5959第一题是只进行一次交易,相当于 `k = 1`;第二题是不限交易次数,相当于 `k = +infinity`(正无穷);第三题是只进行 2 次交易,相当于 `k = 2`;剩下两道也是不限次数,但是加了交易「冷冻期」和「手续费」的额外条件,其实就是第二题的变种,都很容易处理。
6060
@@ -181,7 +181,7 @@ dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k-1][0] - prices[i])
181181
182182** 第一题,先说力扣第 121 题「买卖股票的最佳时机」,相当于 `k = 1 ` 的情况** :
183183
184- 
184+ < Problem slug= " best-time-to-buy-and-sell-stock " / >
185185
186186直接套状态转移方程,根据 base case,可以做一些化简:
187187
@@ -270,7 +270,7 @@ int maxProfit_k_1(int[] prices) {
270270
271271** 第二题,看一下力扣第 122 题「买卖股票的最佳时机 II 」,也就是 `k` 为正无穷的情况** :
272272
273- 
273+ < Problem slug= " best-time-to-buy-and-sell-stock-ii " / >
274274
275275题目还专门强调可以在同一天出售,但我觉得这个条件纯属多余,如果当天买当天卖,那利润当然就是 0 ,这不是和没有进行交易是一样的吗?这道题的特点在于没有给出交易总数 `k` 的限制,也就相当于 `k` 为正无穷。
276276
@@ -322,7 +322,7 @@ int maxProfit_k_inf(int[] prices) {
322322
323323** 第三题,看力扣第 309 题「最佳买卖股票时机含冷冻期」,也就是 `k` 为正无穷,但含有交易冷冻期的情况** :
324324
325- 
325+ < Problem slug= " best-time-to-buy-and-sell-stock-with-cooldown " / >
326326
327327和上一道题一样的,只不过每次 `sell` 之后要等一天才能继续交易,只要把这个特点融入上一题的状态转移方程即可:
328328
@@ -381,7 +381,7 @@ int maxProfit_with_cool(int[] prices) {
381381
382382** 第四题,看力扣第 714 题「买卖股票的最佳时机含手续费」,也就是 `k` 为正无穷且考虑交易手续费的情况** :
383383
384- 
384+ < Problem slug= " best-time-to-buy-and-sell-stock-with-transaction-fee " / >
385385
386386每次交易要支付手续费,只要把手续费从利润中减去即可,改写方程:
387387
@@ -435,7 +435,7 @@ int maxProfit_with_fee(int[] prices, int fee) {
435435
436436** 第五题,看力扣第 123 题「买卖股票的最佳时机 III 」,也就是 `k = 2 ` 的情况** :
437437
438- 
438+ < Problem slug= " best-time-to-buy-and-sell-stock-iii " / >
439439
440440`k = 2 ` 和前面题目的情况稍微不同,因为上面的情况都和 `k` 的关系不太大:要么 `k` 是正无穷,状态转移和 `k` 没关系了;要么 `k = 1 ` ,跟 `k = 0 ` 这个 base case 挨得近,最后也没有存在感。
441441
@@ -547,7 +547,7 @@ int maxProfit_k_2(int[] prices) {
547547
548548** 第六题,看力扣第 188 题「买卖股票的最佳时机 IV 」,即 `k` 可以是题目给定的任何数的情况** :
549549
550- 
550+ < Problem slug= " best-time-to-buy-and-sell-stock-iv " / >
551551
552552有了上一题 `k = 2 ` 的铺垫,这题应该和上一题的第一个解法没啥区别,你把上一题的 `k = 2 ` 换成题目输入的 `k` 就行了。
553553
0 commit comments