public static int maxProfit(int k, int [] prices) {
int dp_i10 = 0;
int dp_i11 = Integer.MIN_VALUE;
int dp_i20 = 0;
int dp_i21 = Integer.MIN_VALUE;
for(int price : prices) {
//今天我没有持有股票 昨天就没有持有,然后今天选择 rest,我昨天持有股票,但是今天我 sell
dp_i20 = Math.max(dp_i20, dp_i21 + price);
//今天我持有着股票,要么我昨天就持有着股票,然后今天选择 rest我昨天本没有持有,但今天我选择 buy
dp_i21 = Math.max(dp_i21,dp_i10 - price);
//今天我没有持有股票 昨天就没有持有,然后今天选择 rest,我昨天持有股票,但是今天我 sell
dp_i10 = Math.max(dp_i10, dp_i11 + price);//
//今天我持有着股票,要么我昨天就持有着股票,然后今天选择 rest我昨天本没有持有,但今天我选择 buy
dp_i11 = Math.max(dp_i11,-price);
}
return dp_i20;
}
买卖股票的最佳时机3---最多只能完成两次交易
最新推荐文章于 2024-03-04 17:09:42 发布