class Solution {
public int maxProfit(int[] prices) {
if (prices.length <= 0) {
return 0;
}
//进行初始化,第一天 s1 将股票买入,其他状态全部初始化为最小值
int s1 = -prices[0], s2 = Integer.MIN_VALUE, s3 = Integer.MIN_VALUE, s4 = Integer.MIN_VALUE;
for (int i = 1; i < prices.length; ++i) {
s1 = Math.max(s1, -prices[i]); //买入价格更低的股
s2 = Math.max(s2, s1 + prices[i]); //卖出当前股,或者不操作
s3 = Math.max(s3, s2 - prices[i]); //第二次买入,或者不操作
s4 = Math.max(s4, s3 + prices[i]); //第二次卖出,或者不操作
}
return Math.max(0, s4);
}
}