这道题算是股票问题的变体之一,主要在于不限制交易次数而存在冷冻期,所以我们需要对我们的dp数组进行改变,第一维是指第几天,第二维是指是否持有股票,在这里因为不限制交易次数k,所以并未涉及第三维度。

同时,在这里我的状态转移方程为:

第i天未持有股票的可能性有:1.第i-1天未持有股票 2.第i-1天持有股票后卖出了。

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

第i天持有股票的可能性有:1.第i-1天持有股票 2.第i-1天未持有股票,且非冷冻期买入。此时第二种情况为dp[i-2][0]-prices[i-1],原因在于:由上一个方程可知,dp[i-1][0]=Math.max(dp[i-2][0],dp[i-2][1]+prices[i-2]);我们需要的是非冷冻期的买入,所以取dp[i-2][0].

不妨设想,冷冻期如果不是两天,而是k天,我们也可以直接取为dp[i-k][0];

 dp[i][1]=Math.max(dp[i-1][1],dp[i-2][0]-prices[i-1]);  
    public int maxProfit(int[] prices) {

        int [][] dp=new int[prices.length+1][3];

        dp[0][0]=dp[1][0]=0;
dp[0][1]=Integer.MIN_VALUE;
dp[1][1]=-prices[0];
for(int i=2;i<=prices.length;i++)
{
dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]+prices[i-1]);
dp[i][1]=Math.max(dp[i-1][1],dp[i-2][0]-prices[i-1]);
} return dp[prices.length][0];
}

最新文章

  1. STC系列STC10F芯片解密STC10L单片机破解复制技术
  2. linux中模块的构建,传参,和printk函数的简单使用
  3. cf558c(bfs)
  4. Spring + Mybatis 使用 PageHelper 插件分页
  5. Django基础——Model篇(二)
  6. 基础DOM和CSS操作(三)
  7. C# 操作 Word 修改word的高级属性中的自定义属性2
  8. jQuery源码整体结构(源码2.0.3)
  9. ViewPager 详解(二)---详解四大函数
  10. 命令行工具命令 - run包到手机里
  11. 【线段树】【3-21个人赛】【同样的problemB】
  12. 香蕉派 BPI-M1+ 双核开源硬件单板计算机
  13. Redis集群环境安装指南
  14. UE4新手编程之创建C++项目
  15. HTTPClient网络异常:java.lang.IllegalStateException: Content has been consumed
  16. springboot测试、打包、部署
  17. 使用HTML meta no-cache标签来禁用缓存
  18. DataReader分页性能测试
  19. JedisCluster
  20. day73 中间件 以及模板引擎

热门文章

  1. SqlServer常用语句整理
  2. C++ 标准模板库(STL)——算法(Algorithms)的用法及理解
  3. Ubuntu18.04 安装opensips,实现局域网内sip语音视频通话
  4. 单细胞分析实录(17): 非负矩阵分解(NMF)代码演示
  5. Java多线程系列-基本概念
  6. 第一篇 -- Jmeter的安装下载
  7. Pelles C 五光十色中的一抹经典
  8. OpenFaaS实战之四:模板操作(template)
  9. Centos 7 安装mysql5.7 nginx tomcat
  10. 5G时代,视频会议的未来