js买卖股票最佳时机含手续费
时间: 2025-03-04 21:25:15 浏览: 41
### 计算买卖股票的最佳时机(考虑手续费)
为了计算买卖股票的最佳时机并考虑到交易费用,在 JavaScript 中可以采用动态规划的方法来解决这个问题。通过维护两个状态变量 `hold` 和 `notHold` 来跟踪持有和不持有股票的最大利润。
```javascript
/**
* @param {number[]} prices - 股票价格数组
* @param {number} fee - 每次交易的固定手续费
* @return {number} - 最大收益
*/
function maxProfit(prices, fee) {
let hold = -prices[0]; // 初始买入成本
let notHold = 0; // 不持股时的最大利润
for (let i = 1; i < prices.length; ++i) {
// 更新持有时的最大利润
hold = Math.max(hold, notHold - prices[i]);
// 更新未持有时的最大利润,减去交易费
notHold = Math.max(notHold, hold + prices[i] - fee);
}
return notHold;
}
```
此算法遍历一次价格列表,时间复杂度为 O(n),其中 n 是天数的数量。空间复杂度为 O(1),因为只用了常量级别的额外存储[^1]。
该方法利用了贪心策略,即总是尝试在最低价买进,并尽可能早地卖出以获取最大利益,同时扣除每次交易所产生的固定费用。这种方法能有效地找到最优解而不需要回溯或穷举所有可能的情况。
阅读全文
相关推荐









