1. 程式人生 > >Leetcode初級演算法 買賣股票的最佳時機 Python

Leetcode初級演算法 買賣股票的最佳時機 Python

問題描述:

演算法思路:

一個很自然的想法是找到陣列的最大值和最小值,相減得到最大差值。但因為是買賣股票,售出必須發生在買入之後,所以利潤對應的買入買出價不一定是陣列的極值。舉例說明:假設陣列的極值為max,min,最佳的買入賣出價格為buy,sell,如果這幾個元素的相對順序為:max,buy,sell,min,顯然min和max無法影響答案,因為buy必須放在sell的前面。

稍微調整下思路,我們只需要掃描價格陣列,維護一個最小值,當前元素-最小值>最大利潤時,更新最大利潤即可。

 

程式碼:

class Solution(object):
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        if prices == []: return 0
        profit,min = 0, prices[0]
        for price in prices:
            if price < min:
                min = price
            else:
                profit = max(profit,price-min)
        return profit