[LeetCode]Best Time to Buy and Sell Stock II

来源:互联网 发布:淘宝店招图片大全清新 编辑:程序博客网 时间:2024/06/11 00:51

今天写的是贪婪算法里面一个很简单的题:Best Time to Buy and Sell Stock II

122Best Time to Buy and Sell Stock II46.3%Easy题目描述是这样的:

Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

输入是一个数列,一个描述第i天卖出stock的价格,要求的是最大收益。可以买,也可以卖,但是在卖之前必须先买进来。

那这样就很简单了,我们只要每两天之间存在第二天的价格高于第一天的价格就可以把差价加入收益里面,这样就可以得到最大化的利益了。

为什么呢?假设数列如下:1,2,4,5,3,7  那么我们会把1和2之间的差价加入profit,然后是2和4的差价,4和5的差价,最后是3和7的差价。为什么我们可以把1和2的差价还有2和4的差价都加进去呢,其实这么想就可以了,我们在第一天买入,那么我们第二天不卖,第三天才卖,那利益不就一样了吗。至于后面的3和7也很好理解,花了3买再7卖出去,差价是4,也就是收益了。

当然了,如果数列长度只有1,那肯定是没得赚了orz

代码如下:

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


0 0