← [ BACK_TO_NOTES ]

买卖股票的最佳时机(含手续费)

状态机 DP 经典题:在买入或卖出时扣手续费,核心仍是持股 / 不持股状态转移。

#algorithm #snippet #growing #leetcode #dp

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

买卖股票的最佳时机(含手续费)

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

状态

  • hold:持股最大收益
  • empty:不持股最大收益

转移

newEmpty = max(oldEmpty, oldHold + price - fee)
newHold = max(oldHold, oldEmpty - price)

手续费每笔完整交易只扣一次,本例在卖出时扣;允许多次交易但同时最多持有一股,不能把 LC121 的单次买入限制沿用到这里。

JavaScript

var maxProfit = function(prices, fee) {
    if (prices.length === 0) return 0;
    let hold = -prices[0];
    let empty = 0;

    for (let i = 1; i < prices.length; i++) {
        const prevEmpty = empty;
        empty = Math.max(empty, hold + prices[i] - fee);
        hold = Math.max(hold, prevEmpty - prices[i]);
    }

    return empty;
};
创建于 2026/3/18 更新于 2026/10/7
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本