解法一:动态规划
自己没想出来。。。
参见官方题解:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/solution/mai-mai-gu-piao-de-zui-jia-shi-ji-han-shou-xu-fei-/
class Solution {
public int maxProfit(int[] prices, int fee) {
// last保存上一次状态, cur保存当前状态
// 持有股票状态下的最大利润
int lastHold = -prices[0];
// 不持有股票状态下的最大利润
int lastCash = 0;
int curHold = lastHold;
int curCash = lastCash;
for (int i = 1; i < prices.length; ++i) {
curCash = Math.max(lastCash, lastHold + prices[i] - fee);
curHold = Math.max(lastHold, lastCash - prices[i]);
lastCash = curCash;
lastHold = curHold;
}
return Math.max(curHold, curCash);
}
}