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

leetcode——Best Time to Buy and Sell Stock

时间:2015-01-14 19:39:12      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

只有每次看这个图的时候才觉得c++没有白学啊~~~平常用vs的时候都各种怀念eclipse,各种怀念java~~~

这题算的是最大利润,原先我想的是找到最小值和最大值,之差不就是最大利润了么,后来想想,最小值可能在最大值之后,不能说在3号买进了回去1号卖出股票哈~然后想,记录某天之前的最小值,再记录那天之后的最大值,这么一算就能算出在某段时间内的最大利润了,再比一比好几段时间内的利润,就能算出最终的最大利润。

class Solution {
    // maxVal[i]和minVal[i]表示i之后的最大值和i之前的最小值,最后再遍历一边,算出最大利润
public:
    int maxProfit(vector<int> &prices) {
        if(prices.empty()) return 0;
        const int size = prices.size();
        int maxVal[size], minVal[size];
        int maxProfit(INT_MIN);
        minVal[0] = prices[0];
        maxVal[size - 1] = prices[size - 1];
        for(int i = 1; i < size; i ++){
            minVal[i] = min(minVal[i-1], prices[i]);
        }
        for(int i = size-2; i >= 0; i --){
            maxVal[i] = max(maxVal[i+1], prices[i]);
        }
        for(int i = 0; i < size; i ++){
            maxProfit = max(maxProfit, maxVal[i] - minVal[i]);
        }
        return maxProfit;
    }
};

leetcode——Best Time to Buy and Sell Stock

标签:

原文地址:http://www.cnblogs.com/skysand/p/4224648.html

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