leetcode 121. 买卖股票的最佳时机

121. 买卖股票的最佳时机
本题目是一道动态规划题目,状态转移方程:
显然要分为两种情况讨论,当天晚上手里还有股票,当天晚上手里没有股票。
dp[i][0]表示第i天的时候,手里没有股票的最大利润
dp[i][1]表示第i天的时候,手里有股票的最大利润

       //当天有股票(可能是昨天就有,可能是昨天也没有,今天买的)
        dp[i][1]=Math.max(dp[i-1][1],-prices[i]);
        //当天没有股票(可能昨天也没有,可能是昨天有但是今天卖了)
        dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]+prices[i]);
class Solution {
    public int maxProfit(int[] prices) {
        int len=prices.length;
        int [][] dp=new int [len][2];
        dp[0][0]=0;//第0天手里没有股票
        dp[0][1]=-prices[0];//第0天手里有股票
        for(int i=1;i<len;i++){
            //当天有股票(可能是昨天就有,可能是昨天也没有,今天买的)
            dp[i][1]=Math.max(dp[i-1][1],-prices[i]);
            //当天没有股票(可能昨天也没有,可能是昨天有但是今天卖了)
            dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]+prices[i]);

        }
        return dp[len-1][0];


    }
}

你可能感兴趣的:(leetcode,leetcode,算法,动态规划)