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

leetcode第一刷_Best Time to Buy and Sell Stock

时间:2017-05-27 12:10:27      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:solution   amp   pop   最小值   price   cto   贪心   toc   最大   

这样的题就不要去考虑N^2的算法了。肯定会超时的。乍一看,非常可能会想到贪心,可是普通的贪心思路是不行的,比方想找到一个最小值用来买入。尽管它跟最大值之间的差一定是最好的,可是最大值出如今它前面就不行了,找出如今它后面的最大值,仅仅只是是一个局部最优,非常可能前面的最大和次小比他们要好。

所以呢,贪心找的不是两个点,而是差。这种话。每一步都维护一个最小值,然后算跟当前最小之间的差来更新最后的结果。

代码简洁,不在赘述。

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


leetcode第一刷_Best Time to Buy and Sell Stock

标签:solution   amp   pop   最小值   price   cto   贪心   toc   最大   

原文地址:http://www.cnblogs.com/llguanli/p/6912150.html

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