题目链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/
代码
class Solution:
def maxProfit(self, prices: List[int]) -> int:
n,res = len(prices),0
dp=[0]*n
for i in range(n):
if i == 0 :
dp[i]=prices[i]
else:
dp[i]=min(prices[i],dp[i-1])
res=max(res,prices[i]-dp[i])
return res if res > 0 else 0
思路详解
动态规划的方式,记录直到当前节点最小值
可以对以上代码进行优化,节省空间
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if not prices:return 0
n,res = len(prices),0
max_val=0
tmp_min=prices[0]
for i in range(n):
if prices[i]-tmp_min > max_val:
max_val=prices[i]-tmp_min
if prices[i] < tmp_min:
tmp_min=prices[i]
return max_val