🍑 算法题解专栏
class Solution {
public int maxProfit(int[] prices) {
int len = prices.length;
int[][] f = new int[len+1][3];// 0 表示空仓,1 表示持仓,2 表示冷冻期(持续一天,即后一天可以进行交易)
f[0][0] = -0x3f3f3f3f;//非法
f[0][1] = -0x3f3f3f3f;//非法
f[0][2] = 0;//当前冷冻期
for(int i = 1; i <= len; i++)
{
// 空仓 空仓 冷冻期过后
f[i][0] = Math.max(f[i-1][0],f[i-1][2]);
// 持仓 持仓 空仓买入
f[i][1] = Math.max(f[i-1][1],f[i-1][0] - w[i]);
// 冷冻期 只有可能时持仓 卖出
f[i][2] = f[i-1][1] + w[i];
}
return Math.max(f[len][1],f[len][2]);
}
}
👨🏫 参考地址