mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
补充 0714 买卖股票最佳时机含手续费 JavaScript 版本 动态规划解法
This commit is contained in:
@ -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;
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user