首页 > 其他 > 详细

Best Time to Buy and Sell Stock II

时间:2015-04-08 12:26:06      阅读:178      评论:0      收藏:0      [点我收藏+]

给定一个股票价格的时间序列,必须先买后卖,买之前必须卖出已有的,可以多次交易,求最大收益是多少

思路:
假设三天内的价格为1 2 3,那第一天买入,第三天卖出收益最大,等价做法是第一天买入第二天卖出,第二天买入,第三天卖出。
假设三天内价格为3 2 1,那就没有收益了。
假设三天内的价格为2 1 3,第二天买入,第三天卖出。
以上规律可以看出就是求出每一次的递增子序列的头和尾的差,也可以逐个求得即sum += prices[i] - prices[i - 1] > 0 ? prices[i] - prices[i - 1] : 0

  1. class Solution {
  2. public:
  3. int maxProfit(vector<int> &prices) {
  4. int sum = 0;
  5. for (size_t i = 1; i < prices.size(); i++)
  6. sum += prices[i] - prices[i - 1] > 0 ? prices[i] - prices[i - 1] : 0;
  7. return sum;
  8. }
  9. };




Best Time to Buy and Sell Stock II

原文:http://www.cnblogs.com/flyjameschen/p/2777440dae5384907b439e2c55fb4c3d.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!