📅  最后修改于: 2023-12-03 15:00:53.589000             🧑  作者: Mango
Geeks编码挑战是由GeeksforGeeks主办的一项为期三天的编程比赛活动,旨在鼓励程序员通过解决实际问题来提高编码能力和算法水平。
Geeks编码挑战是一个绝佳的机会,让参赛者可以在限定时间内解决实际问题,挑战自己的编码能力和算法水平。通过此项活动,参赛者可以:
def maxProfit(prices: List[int]) -> int:
if not prices:
return 0
n = len(prices)
# dp[i][0]: 手上持有股票的最大收益
# dp[i][1]: 手上不持有股票,并且处于冷冻期中的累计最大收益
# dp[i][2]: 手上不持有股票,并且不在冷冻期中的累计最大收益
dp = [[0] * 3 for _ in range(n)]
dp[0][0] = -prices[0]
for i in range(1, n):
dp[i][0] = max(dp[i - 1][0], dp[i - 1][2] - prices[i])
dp[i][1] = dp[i - 1][0] + prices[i]
dp[i][2] = max(dp[i - 1][1], dp[i - 1][2])
return max(dp[n - 1][1], dp[n - 1][2])