121. Best Time to Buy and Sell Stock
只能买卖一次
时间复杂度:O(n)
代码如下:
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
res = 0
buy = float('-inf')
for i in prices:
buy = max(buy, -i)
res = max(res, buy+i)
return res
122. Best Time to Buy and Sell Stock II
多次买卖
时间复杂度:O(n)
代码如下:
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
res = 0
for i in range(1, len(prices)):
if prices[i] > prices[i-1]:
res += prices[i] - prices[i-1]
return res
123. Best Time to Buy and Sell Stock III
买卖两次
时间复杂度:O(n)
代码如下:
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
buy1 = buy2 = float('-inf')
sale1 = sale2 = 0
for i in prices:
buy1 = max(buy1, -i)
sale1 = max(sale1, buy1 + i)
buy2 = max(buy2, sale1 - i)
sale2 = max(sale2, buy2 + i)
return sale2