Best Time to Buy and Sell Stock II
2016-07-19 10:55
375 查看
本题属于动态dp,
buy表示到目前i为止最后一个状态是买(有可能之前买的最近一直没卖,有可能是刚买的)
sell表示到目前i为止最后一个状态是卖(有可能之前卖了最近一直没买,有可能刚卖的)
注意一下两个递推公式:
buy=max(buy,sell-prices[i]);
sell=max(sell,buy+prices[i]);
另外,要找到开始的buy和sell,当找到递增部分即可。
AC代码:
buy表示到目前i为止最后一个状态是买(有可能之前买的最近一直没卖,有可能是刚买的)
sell表示到目前i为止最后一个状态是卖(有可能之前卖了最近一直没买,有可能刚卖的)
注意一下两个递推公式:
buy=max(buy,sell-prices[i]);
sell=max(sell,buy+prices[i]);
另外,要找到开始的buy和sell,当找到递增部分即可。
AC代码:
<pre name="code" class="cpp">class Solution { public: int maxProfit(vector<int>& prices) { int buy=0,sell=0,j=0; if(prices.size()>1){ //判断下初始的buy 和sell for(;j<prices.size()-1;j++){ if(prices[j+1]>prices[j]){ buy=-prices[j]; sell=prices[j+1]-prices[j]; break; } } for(int i=j+2;i<prices.size();i++){ buy=max(buy,sell-prices[i]); sell=max(sell,buy+prices[i]); } } return sell; } };
相关文章推荐
- ASP.NET MVC设计原则讲解
- 51nod 1125 交换机器的最小代价
- Sparse Table算法+poj3264(Balanced line up)题解----倍增思想
- CentOS Linux下VNC Server远程桌面配置详解
- SSM报错:java.sql.SQLException: 无效的列类型: 1111
- HDOJ 3790 Balanced Number
- 基于java容器注解说明---@Value和@ImportResource
- I/O模型
- 智学教育 开发手册
- Java基本类型学习
- win7 中使用PLSQL Developer的配置方法
- 面试缺点
- 86.图像的梯度
- CodeForces 347B Fixed Points
- CodeForces 349B Color the Fence
- 使用PreparedStatement操作数据库
- 76. Minimum Window Substring
- 安卓启动拍照并保存照片
- UVa 455 - Periodic Strings
- IntelliJ IDEA 使用心得与常用快捷键