题解 | #买卖股票的最好时机(一)#
买卖股票的最好时机(一)
https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec
一个普遍的解法。记录下标区间。
class Solution: def maxProfit(self , prices: List[int]) -> int: # 初始化 x = 0 y = 0 maxsub = 0 # 滑动区间 left = 0 right = 0 # 记录最大差的区间 resl = 0 resr = 0 for i in range(1, len(prices)): right += 1 # 状态转移:最大差 y = max(x + prices[i] - prices[i - 1], 0) # 滑动区间新起点 if x + prices[i] - prices[i-1] < 0: left = right # 更新最大值 if y > maxsub: maxsub = y resl = left resr = right # 更新x的状态 x = y # 取结果。本题也可以返回maxsub,有些题需要用下标描述。 # return maxsub return len(prices) and prices[resr] - prices[resl]