补充 0714 买卖股票最佳时机含手续费 JavaScript 版本 动态规划解法

This commit is contained in:
Luo
2021-10-02 14:19:52 +08:00
committed by GitHub
parent 18a9fe0f07
commit ee3e483505

View File

@ -262,6 +262,34 @@ var maxProfit = function(prices, fee) {
}
return result
};
// 动态规划
/**
* @param {number[]} prices
* @param {number} fee
* @return {number}
*/
var maxProfit = function(prices, fee) {
// 滚动数组
// have表示当天持有股票的最大收益
// notHave表示当天不持有股票的最大收益
// 把手续费算在买入价格中
let n = prices.length,
have = -prices[0]-fee, // 第0天持有股票的最大收益
notHave = 0; // 第0天不持有股票的最大收益
for (let i = 1; i < n; i++) {
// 第i天持有股票的最大收益由两种情况组成
// 1、第i-1天就已经持有股票第i天什么也没做
// 2、第i-1天不持有股票第i天刚买入
have = Math.max(have, notHave - prices[i] - fee);
// 第i天不持有股票的最大收益由两种情况组成
// 1、第i-1天就已经不持有股票第i天什么也没做
// 2、第i-1天持有股票第i天刚卖出
notHave = Math.max(notHave, have + prices[i]);
}
// 最后手中不持有股票,收益才能最大化
return notHave;
};
```