leetcode 123. 买卖股票的最佳时机 III
使用动态规划的解法,空间复杂度O(2*2)如果交易k次则为O(2*k),时间复杂度O(2n),交易k次为O(n*k),
因此本题实际上可以退化为买卖一次的情况:去掉buy2和sell2,即leetcode121; 以及进化为买卖k次的情况,即状态变量增加为k个buy和sell,即leetcode188
初始化buy[k]=-∞,sell[k]=0;具体原理如下:
class Solution { public:int maxProfit(vector<int>& prices) {//当只能持有1股时题目可以认为是一个二维的图计算递推,定义buy1,sell1,buy2,sell2,表示第i天(i为下标)第1或2次买入卖出//定义状态转移,见程序//为了能够递推需要状态初值,考虑第0天buy1肯定为买入第0天,需要让-price在任何情况下都大于buy1,因此buy1初值为-∞//sell1的状态至少是当天买入并卖出,因此最小为0,又因为只要大于0就应该选择大于0的方案,综合两种情况应该赋值为0,同理buy2和sell2int len=prices.size();if(len<=1) return 0;int sell1=0,sell2=0,buy1=INT_MIN,buy2=INT_MIN;int res=0;for(int price:prices){buy1=max(buy1,-price);sell1=max(sell1,buy1+price);buy2=max(buy2,sell1-price);sell2=max(sell2,buy2+price);}return sell2;} };
转载于:https://www.cnblogs.com/joelwang/p/10865258.html
leetcode 123. 买卖股票的最佳时机 III相关推荐
- LeetCode 123. 买卖股票的最佳时机 III(动态规划)
1. 题目 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意: 你不能同时参与多笔交易(你必须在再次购买 ...
- 107. Leetcode 123. 买卖股票的最佳时机 III (动态规划-股票交易)
步骤一.确定状态: 确定dp数组及下标含义 dp[i] 表示的是在第i天可以获取的最大利润,每天会有持有股票和不持有股票两种状态,这个是 第二维度,还是用0和1表示. 而对于每一种状态,这里还会有交易 ...
- leetcode 123. 买卖股票的最佳时机 III(dp)
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的 ...
- LeetCode 123. 买卖股票的最佳时机 III(Best Time to Buy and Sell Stock III)
题目描述: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意: 你不能同时参与多笔交易(你必须在再次购买 ...
- 123. 买卖股票的最佳时机 III ( 三维dp )
LeetCode:123. 买卖股票的最佳时机 III 之前的含手续费定义了两个状态(持股与不持股), 含冷冻期定义了三个状态(持股, 不持股冷冻期, 不持股非冷冻期), 都是二维数组. 本题除了持股 ...
- 力扣 -- 123. 买卖股票的最佳时机 III
题目链接:123. 买卖股票的最佳时机 III - 力扣(LeetCode) 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴. 参考代码: class So ...
- 算法训练第五十天 | 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV
动态规划part11 123.买卖股票的最佳时机III 题目描述 思路 拓展 188.买卖股票的最佳时机IV 题目描述 思路 易错点 123.买卖股票的最佳时机III 题目链接:123.买卖股票的最佳 ...
- 【第50天| ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV 】
123.买卖股票的最佳时机III class Solution {public:int maxProfit(vector<int>& prices) {vector<int& ...
- 第43天| 123.买卖股票的最佳时机III、 188.买卖股票的最佳时机IV
1.题目链接:123. 买卖股票的最佳时机 III 题目描述: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易 ...
最新文章
- JSTL标签库学习笔记
- 只知道用它打印了Hello World,除此之外你了解多少呢?
- 本构二次开发 c语言,umat二次开发超弹性本构.doc
- 2019北邮计算机考研大纲,2019年北京邮电大学802电子电路考研大纲
- 基于注解的方式装配bean
- 探讨ASP.NET 2.0中的Web控件改进技术(2)
- python操作hbase,Python操作Hbase
- Java High CPU故障排除指南–第1部分
- latex 幻灯片演示模板
- vue项目打包:npm run build 进程卡死
- linux下oracle中文乱码问题的解决
- centos7邮件服务器SSL配置
- js判断复选框是否被选中
- java 每隔一小时运行_每隔一小时执行一次 Full GC 分析排查
- linux交叉编译libnet,交叉编译samba(mipsel-linux) samba-3.3.3.tar.gz
- LZY的游戏(YYOJ)
- ubuntu安装gef,pwndbg,peda
- matlab pi表示,matlab中pi是什么意思
- Android apk 安全措施详细说明(签名、混淆、加固、H5安全方案)
- 【本周Python热点回顾】画一棵漂亮的樱花树,Python3*和**运算符,Python入门,这就是Python3.8么,i了
热门文章
- phpstorm xdebug配置
- 安卓手机关闭底部键盘灯的方法(htc G11亲测有效)
- ASP.NET应用程序性能测试
- srcElement
- 安装PowerDesigner造成Office2007鼠标无法正常使用
- storm-hbase jar包中的bolt节点源码解析
- windows media services 2008外网无法访问
- row_number() over(partition by order by )使用说明书
- Rails Minitest style 指南
- python decimal_python学习笔记一