码迷,mamicode.com
首页 > 其他好文 > 详细

Best Time to Buy and Sell Stock II

时间:2015-04-08 12:28:55      阅读:106      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!