mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
补充 0714 买卖股票最佳时机含手续费 JavaScript 版本 动态规划解法
This commit is contained in:
@ -262,6 +262,34 @@ var maxProfit = function(prices, fee) {
|
|||||||
}
|
}
|
||||||
return result
|
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