给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

思路一:

for循环分割成两组,分别计算最大值

时间复杂度O(n2)

思路二:

五个状态

1、未买

2、买第一支股票(buy1)

3、卖第一支股票(sell1)

4、买第二支股票(buy2)

5、卖第二支股票(sell2)

由于1、始终是0,所以实际后四个状态即刻。

状态转移方程:

buy1 = max(buy1,-price[i]);

sell1 = max(sell1,buy1+price[i]);

buy2 = max(buy2,sell1-price[i]);

sell2 = max(sell2,buy2+price[i]);

由于股票可以在同一天不断买入卖出

所以初始化时

buy1 = -price[0];

sell1 = 0;

buy2 = -price[0];

sell2 = 0;

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii

最新文章

  1. vcredist_x64.exe vcredist_x86.exe 静默安装方法收集
  2. TypeScript Declaration Merging(声明合并)
  3. JSP入门
  4. Sensor(ORIENTATION)
  5. 使用Visual Studio下自带的SQL Server Express
  6. SPSS数据分析—协方差分析
  7. C语言+SDL2 图形化编程
  8. jQuery学习之prop和attr的区别
  9. centos update git(转载)
  10. MySQL订单分库分表多维度查询
  11. Linux中TCP wrapper的使用
  12. Java图片加文字水印
  13. Mybatis学习总结(九)——查询缓存
  14. js中 给json对象添加属性和json数组添加元素
  15. MyOD
  16. VS2005快捷键大全
  17. es6 ...展开运算符
  18. Kafka 0.8 Consumer处理逻辑
  19. 【Unity笔记】摄像机、图片的模糊处理
  20. sprint3最终演示及团队贡献分

热门文章

  1. 从go-libp2p开始
  2. 连接数从异常到 300 到 5(RDS MySQL 的一个大坑•后记)
  3. JavaScript:浏览器的本地存储
  4. oracle DG搭建
  5. win10平衡模式、高性能模式和卓越模式三种电池模式的区别
  6. Kubernetes【K8S】(五):Service
  7. Docker(二):Docker镜像仓库Harbor搭建
  8. python 字典常用操作
  9. css 17-CSS3的常见边框汇总
  10. vscode php转到定义