leetcode-----最佳買賣股票時機2

思路:由於可以做多次交易,所以相當於求多個階段的收益,如下圖,例如 8大於1,所以就開始結算之前的收益。如果8的後面是9的話,比8大,那就繼續往前,直接下一個狀態比其小,纔開始結算收益。

class Solution:
    def maxProfit(self, prices) -> int:
        if prices == []: return 0
        max_price = prices[0]
        min_prices = prices[0]
        profit = 0
        n = len(prices)
        for i in range(n):
            if max_price > prices[i]:
                profit += (max_price-min_prices)
                max_price = prices[i]
                min_prices = prices[i]
            else:
                max_price = prices[i]
                min_prices = min(min_prices, prices[i])
            if i == n-1:
                profit += (max_price - min_prices)
        return profit
l=[6,2,8,1,5]
ss = Solution()
res = ss.maxProfit(l)
print(res) #10

時間複雜度:O(N) 空間複雜度:O(1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章