leetcode 买卖股票的最佳时机 IV

leetcode 买卖股票的最佳时机 IV

 

 

 这是一道hard题,和之前的买股票三都是同一类型,无非是限制的k为2或不知到k的值,但解决思路都是一样,三重dp,第一维记录第几天,第二位记录还最多能交易的次数,第三维记录手中是否存有股票,具体见算法思想中的股票问题。

    public int maxProfit(int k, int[] prices) {
        int [][][] dp=new int[prices.length+1][k+1][2];
        for(int i=0;i<=k;i++)
        {
            dp[0][i][0]=0;
            dp[0][i][1]=Integer.MIN_VALUE;
        }
        for(int i=1;i<prices.length+1;i++)
            for(int j=1;j<=k;j++)
            {
                dp[i][j][0]=Math.max(dp[i-1][j][0],dp[i-1][j][1]+prices[i-1]);
                dp[i][j][1]=Math.max(dp[i-1][j][1],dp[i-1][j-1][0]-prices[i-1]);
            }
        return dp[prices.length][k][0];
        
    }

leetcode 买卖股票的最佳时机 IV

 

上一篇:Leetcode - 12. 整数转罗马数字


下一篇:Bugku WEB CBC