题目描述
自己解法及改进
维持一个数组,用动态规划
的思想,记录在某一天卖出时的最大利润
,最后遍历求取最大值,即买卖股票的最佳策略。缺点是空间复杂度过高。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if not prices:
return 0
profit = [0 for val in prices]
minPrice = prices[0]
for i in range(1,len(prices)):
if prices[i] > minPrice:
profit[i] = prices[i] - minPrice
else:
profit[i] = 0
minPrice = prices[i]
return max(profit)
时间复杂度
O
(
n
)
O(n)
O(n),空间复杂度
O
(
n
)
O(n)
O(n)
改进:使用一个变量maxProfit
来存储当前最大利润,可以极大节省存储空间:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
inf = int(1e9)
minPrice = inf
maxProfit = 0
for price in prices:
profit = price - minPrice
maxProfit = max(maxProfit,profit)
minPrice = min(price,minPrice)
return maxProfit
时间复杂度
O
(
n
)
O(n)
O(n),空间复杂度
O
(
1
)
O(1)
O(1)
题解区
题解区众多解答参考:题解区解答