Leetcode初級演算法 買賣股票的最佳時機 Python
阿新 • • 發佈:2018-12-22
問題描述:
演算法思路:
一個很自然的想法是找到陣列的最大值和最小值,相減得到最大差值。但因為是買賣股票,售出必須發生在買入之後,所以利潤對應的買入買出價不一定是陣列的極值。舉例說明:假設陣列的極值為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