例 :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;