LeetCode122. Best Time to Buy and Sell Stock II

题目描述:

假设你有一个数组,其中第i个元素是第i天给定股票的价格。
如果你只被允许完成最多一笔交易(即买入并卖出一股股票),请设计一个算法来查找最大利润。

  • 请注意,不得同时进行多笔交易(即您必须在再次购买前卖出股票)

Example1

Input: [7,1,5,3,6,4]
Output: 7

Explanation
第二天买入,第三天卖出,利润是5-1=4.
然后第四天买入,第五天卖出,利润是6-3=3

Example2

Input: [1,2,3,4,5]
Output: 4

Explanation
第一天买入,第五天卖出,利润是5-1=4.
注意你不能第一天买进,第二天买进然后一起卖掉。因为你在同一时间同时进行多个交易时,必须在再次买进之前卖出

Example 3:

Input: [7,6,4,3,1]
Output: 0

Explanation
在这个例子中,没有交易做成因为最大利润是零

C++输入格式

class Solution {
public:
    int maxProfit(vector& prices) {
        
    }
};

范例

class Solution {
public:
    int maxProfit(vector &prices) 
    {
        int ret = 0;
        for(int p = 1; p < prices.size(); ++p) 
            ret += max(prices[p] - prices[p - 1], 0);    
        return ret;    
    }
};

测试结果一

测试结果二

测试结果三

算法思想:

只要后一个数比前一个数大,就加这两个数的差值,否则就加零。即若是连续递增的数组相当于每天都是先卖出再买入

你可能感兴趣的:(LeetCode122. Best Time to Buy and Sell Stock II)