第i天的操作只有三种:没有操作,买入,卖出。
 由于最多只能同时持有一只股票,所以第i天各自操作的收益是
 1、没有操作:第i天的买入收益=第i-1天的买入收益,第i天的卖出收益=第i-1天的卖出收益
 2、买入操作:第i天的买入收益=第i-1天的卖出收益-第i天的价格
 3、卖出操作:第i天的卖出收益=第i-1天的买入收益+第i天的价格
  
状态转移方程如下:(遍历所有的天数)
todayBuy = max(yesterdayBuy,yesterdaySell-prices[today]);
todaySell = max(yesterdaySell,yesterdayBuy+prices[today]);
public int maxProfit (int[] prices) {
    int buy=Integer.MIN_VALUE, sell=0;
    for(int i=0 ;i<prices.length; i++){
        int curbuy = Math.max(buy, sell-prices[i]);
        sell = Math.max(buy+prices[i], sell);
        buy = curbuy;
    }
    return sell;
} 


京公网安备 11010502036488号