问题描述:

在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。

给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。

class Solution {
public:
int maxProfit(vector<int>& prices) {
//It's wrong if you choose the minimum price for buy2 , but you can maximize the left money.
//
int buy1 = INT_MIN, sale1 = 0, buy2 = INT_MIN, sale2 = 0;
for(int i=0; i<prices.size(); i++){ //the more money left, the happier you will be
buy1 = max(buy1, -prices[i]); //left money after buy1
sale1 = max(sale1, prices[i] + buy1); //left money after sale1
buy2 = max(buy2, sale1 - prices[i]); //left money after buy2
sale2 = max(sale2, prices[i] + buy2); //left money after sale2
}
return sale2; }
};

此方法的核心是对于每个数据,我都以相同的处理方法(动态规划),在此,把问题解决转化为手头的剩余的钱的变化, 每一步的处理都是为了手上留下的钱更多。

最新文章

  1. C++指针和动态内存分配
  2. 随笔之——各大热门网站search 搜索框的写法,浅析!
  3. visio 到处流程图
  4. 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法
  5. adobe pro破解说明
  6. java第一节课
  7. aspx、ashx以及cs的关系,viewState
  8. [置顶] Guava学习之ArrayListMultimap
  9. Block 进阶
  10. 《一起》Alpha版软件使用说明
  11. java 字符串全排列 和 去重
  12. Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解
  13. GitHub for Windows客户端使用操作流程
  14. Java框架部分---面试题
  15. commonjs,amd,cmd
  16. 5日均线MACD
  17. API - jQuery之操作cookie(转)
  18. 0ctf2017-babyheap
  19. Python多进程编程(转)
  20. UNITY Destroy()和DestroyImadiate()的区别

热门文章

  1. p12(PKCS12)和jks互相转换
  2. c# winform DataGridView单击选中一整行,只能单选,不能选择多行,只能选择一行
  3. mysql导入乱码问题,centOS
  4. Bootstrap3中.container和.container-fluid区别
  5. BW顾问必需要清楚的:时间相关数据建模场景需求分析
  6. 总结common-dbutils.jar
  7. 执行Hadoop job提示SequenceFile doesn&#39;t work with GzipCodec without native-hadoop code的解决过程记录
  8. HTML的基本骨架
  9. 底部漂浮DIV
  10. 搭建ubuntu14.04的hadoop集群【docker容器充当服务器】