class Solution {
public int maxProfit(int[] prices) {
int len=prices.length;
if(len<2){
return 0;
}
//每天有四种状态
int b1=0-prices[0];//第一次买后的剩下钱
int s1=Integer.MIN_VALUE;//第一次卖后剩下的钱
int b2= Integer.MIN_VALUE;//第二次买后剩下的钱
int s2=Integer.MIN_VALUE;//第二次卖后剩下的钱
for(int i=0;i<len;i++){
b1=Math.max(b1,0-prices[i]);//
s1= Math.max(s1,b1+prices[i]);//不操作(s1),或者卖出当前股(b1+prices[i])
//(b1+prices[i])==第一次买完东西后的钱加上第一次卖出后的钱就是当前的利润。
b2= Math.max(b2,s1-prices[i]);//第二次买入或者不操作
s2= Math.max(s2,b2+prices[i]);//第二次卖出或者不操作
}
return s2;
}
}
leetcode:买卖股票的最佳时机III
最新推荐文章于 2024-07-24 15:48:04 发布