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

【leetcode】Best Time to Buy and Sell Stock II

时间:2014-05-24 19:49:02      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:股票   leetcode   algorithm   数学   c++   

问题:股票交易,交易的次数不限,但是要求在购买新的股票前,必须将旧的股票卖出,即同一时间,最多只能持有一只股票。要求在给定的交易价格序列中,计算出最大的收益。

分析:

保证利润最大,就要求在局部的价格波动中,能在低价买进,高价卖出,也就是说,找个价格走势的递增区间,并且这里可以交易多次,所以可以找到多个价格走势的递增区间,所有区间的收益的和就是最大的利润。

bubuko.com,布布扣

再看下不完全是递增区间的

bubuko.com,布布扣

通过这两种情况,我们得知,再计算的时候,只要遍历价格序列,将差值为正的部分加起来就可以了。当然求取每个递增区间求个区间的差值和也是可以的,这里只是探讨下这二者间存在的潜在的关系。

class Solution {
public:
    int maxProfit(vector<int> &prices) {
        int len = prices.size();
        int res = 0;
        for(int i = 1; i < len ; ++i){
            if(prices[i] - prices[i - 1] > 0)
            res += prices[i] - prices[i - 1];
        }
        if(res < 0) 
        res = 0;
        return res;
    }
};


【leetcode】Best Time to Buy and Sell Stock II,布布扣,bubuko.com

【leetcode】Best Time to Buy and Sell Stock II

标签:股票   leetcode   algorithm   数学   c++   

原文地址:http://blog.csdn.net/shiquxinkong/article/details/26607531

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!