題目來源:
https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/
題目分析:
本題同樣給你一個列表,代表股票每天的價格。需要設計利潤最大化算法。你可以完成你想做的交易(多次買進,賣出一份股票)。但是,你不能同時進行多個交易(即在再次購買之前必須出售股票)。這種題目,網上有兩種理解,但是結果是一樣的。假設允許在同一天買進並賣出股票(題目說的是再次購買前要賣出,沒說不能一天買進又賣出),那麼這個問題可以簡化爲計算相鄰兩天的差額,如果大於0,則賣出,否則不賣;對於不允許同一天買進賣出的人可以這樣理解,例如[2,4,6,7],第一種想法賺的利潤是(4-2)+(6-4)+(7-6)=5,這實際上等效於第一天買進,第4天賣出,同樣利潤爲(7-2)=5
實現代碼:
class Solution:
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
pro=0
if(len(prices)<=1):
return 0
else:
for i in range(len(prices)-1):
if(prices[i]<prices[i+1]):
pro+=prices[i+1]-prices[i]
else:
continue
return pro