我们当然希望在最便宜的时候买入股票,所以我们用一个变量来保存股票最便宜的价格。用另一个变量保存最大的利润值。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if len(prices) == 0:
return 0
min_price = prices[0]
profit = 0
for i in range(len(prices)):
min_price = min(min_price, prices[i])
profit = max(profit, prices[i] - min_price)
return profit
动态规划法,保存最小的价格为买入价格记为minp,保存prices[i]-minp最大的为最大利润记为maxp,初始化minp为prices[0],初始化maxp为0。遍历prices,如果当前元素小于minp,则更新minp,此时也没必要计算利润,因为一定时负值;否则计算当前价格的利润,如果利润变大了,则保存这个利润值。
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
len_p = len(prices)
if len_p == 0:
return 0
minp = prices[0]
maxp = 0
for i in range(1, len_p):
if prices[i] < minp:
minp = prices[i]
elif prices[i] - minp > maxp:
maxp = prices[i] - minp
return maxp