例 :1 5 8 4 2 3 6 4 10 7 3 2 1 6
图片说明
对于这个样例来说,最优的交易应该是:
第1天买,第3天卖
第5天买,第7天卖
第8天买,第10天卖
第13天买,第14天卖
我们再观察可以发现,其实可以简化成,只要是两天之间是上涨的,那我们就要这一段的收益。

c++

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

        }
            return ans;
    }
};

java

import java.util.*;
public class Solution {
    public int maxProfit (int[] prices) {
        int ans = 0;
        for(int i = 1 ; i < prices.length ; i++)
        {
                if(prices[i]>prices[i-1])
                {
                       ans+= prices[i]-prices[i-1];
                }

        }
            return ans;
    }
}

python

class Solution:
    def maxProfit(self , prices ):
        # write code here
        ans = 0;
        Len = len(prices)
        for i in range(1,Len):
            if prices[i]>prices[i-1]:
                ans+= prices[i]-prices[i-1];
        return ans;