当前位置:   article > 正文

【leetcode】309. 最佳买卖股票时机含冷冻期_冷冻期股票

冷冻期股票

一、题目

给定一个整数数组prices,其中第  prices[i] 表示第 i 天的股票价格 。​

设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):

卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入: prices = [1,2,3,0,2]
输出: 3 
解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]
示例 2:

输入: prices = [1]
输出: 0

二、解题思路

动态规划:

由于本题不限制k的大小可以舍去:

dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i])
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 2][0] - prices[i])

//降维i
dp[0] = Math.max(dp[0], dp[1] + prices[i])
dp[1] = Math.max(dp[1], profit_freeze - prices[i])

三、代码 

  1. public int maxProfit(int[] prices) {
  2. int len=prices.length;
  3. int buy=-prices[0];
  4. int sell=0;
  5. int freeze=0;
  6. for(int i=1;i<len;i++) {
  7. int temp=sell;//前天卖出
  8. sell=Math.max(sell, buy+prices[i]);//今天卖出
  9. buy=Math.max(buy, freeze-prices[i]);//今天买入
  10. freeze=temp;//前天的前天
  11. }
  12. return sell;
  13. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/570310
推荐阅读
相关标签
  

闽ICP备14008679号