买卖股票的最佳时机(含冷冻期)

状态机 DP 经典题:买入、卖出、冷冻三种状态,练习状态拆分。

#resource / algorithm #type / snippet #status / growing #source / leetcode #algo / dp

[!info] related notes 动态规划 区间 DP 与状态机 DP 买卖股票的最佳时机

买卖股票的最佳时机(含冷冻期)

题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/

状态设计

  • hold:今天结束后持股
  • sold:今天刚卖出
  • rest:今天结束后不持股且不在冷冻期

转移

hold = max(hold, rest - price)
sold = oldHold + price
rest = max(rest, oldSold)

JavaScript

var maxProfit = function(prices) {
    let hold = -prices[0];
    let sold = 0;
    let rest = 0;

    for (let i = 1; i < prices.length; i++) {
        const prevHold = hold;
        const prevSold = sold;
        const prevRest = rest;

        hold = Math.max(prevHold, prevRest - prices[i]);
        sold = prevHold + prices[i];
        rest = Math.max(prevRest, prevSold);
    }

    return Math.max(sold, rest);
};
创建于 2026/3/18 更新于 2026/5/27