1. 714 买卖股票的最佳时机含手续费
class Solution {
public int maxProfit(int[] prices, int fee) {
if(prices.length==0) return 0;
int dp_i_0=0,dp_i_1=Integer.MIN_VALUE,temp;
for(int i=0;i<prices.length;i++){
temp=dp_i_0;
dp_i_0=Math.max(dp_i_0,dp_i_1+prices[i]);
dp_i_1=Math.max(dp_i_1,temp-prices[i]-fee);
}
return dp_i_0;
}
}
这个动态方程直接从
这里搬的,减个fee就好了,至于另一种,还没想出来,主要加了fee,就不太一样了
2.309 最佳买卖股票时机含冷冻期
class Solution {
public int maxProfit(int[] prices) {
if(prices.length==0) return 0;
int dp_i_0=0,dp_i_1=Integer.MIN_VALUE,temp,dp_i_0_pre=0;
for(int i=0;i<prices.length;i++){
temp=dp_i_0;
dp_i_0=Math.max(dp_i_0,dp_i_1+prices[i]);
dp_i_1=Math.max(dp_i_1,dp_i_0_pre-prices[i]);
dp_i_0_pre=temp;
}
return dp_i_0;
}
}
这个动态方程还是直接从
这里搬的,动态方程需要做改变
dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
dp[i][1] = max(dp[i-1][1], dp[i-2][0] - prices[i])这里是dp[i-2][0]
题解这个大神写的题解真的救了我这6个题