代码:
我的状态方程:
buy[i][j]=max{buy[i−1][j],sell[i−1][j-1]−price[i]}
题解里的:
buy[i][j]=max{buy[i−1][j],sell[i−1][j]−price[i]}
..没理解题解的 但我的通过了
java
class Solution {
public int maxProfit(int k, int[] prices) {
if(prices.length==0)return 0;
int n = prices.length;
k = Math.min(k,n/2);
if(k==0)return 0;
int[][] buy = new int[n][k];
int[][] sell = new int[n][k];
buy[0][0]=-prices[0];
sell[0][0]=0;
for(int i=1;i<k;i++){
buy[0][i] = sell[0][i] = Integer.MIN_VALUE / 2;
}
for(int i=1;i<n;i++){
buy[i][0] = Math.max(buy[i-1][0],-prices[i]);
sell[i][0] = Math.max(sell[i-1][0],buy[i-1][0]+prices[i]);
for(int j=1;j<k;j++){
buy[i][j] = Math.max(sell[i-1][j-1]-prices[i],buy[i-1][j]);
sell[i][j] = Math.max(buy[i-1][j]+prices[i],sell[i-1][j]);
}
}
return Arrays.stream(sell[n-1]).max().getAsInt();
}
}