122. Best Time to Buy and Sell Stock II

来源:互联网 发布:到培训班学淘宝靠谱吗 编辑:程序博客网 时间:2024/06/11 04:36

这道题是买卖股票的改进,由只能一次买卖操作改成可以多次买卖,问最大收益是多少。

这道题其实很简单,贪心即可,遍历数组,如果这一天价格大于昨天价格,那么就昨天买进今天卖出。一开始不敢用贪心,因为不知道有没有什么情况是今天买进,明天价格虽然高于今天,但是不是明天卖出能获得最大收益的情况。但是看了别人的分析之后发现多虑了。因为如果今天买进,明天价格虽然高于今天但是明天不卖出,而是等到后面某一天卖出,那肯定是因为那一天价格最高,但其实对于一个递增序列来说,比如1,2,4,99这个序列,第一天买进,99这一天卖出的话获益98,这和1买进2卖出4买进99卖出所获得的收益是一样的,都是最大的。这个题也是一样,只要是递增序列,就大胆的用第二天的前减去昨天的小的钱就可以。

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


原创粉丝点击