122.买卖股票的最佳时机II

Posted HardyDragon_CC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了122.买卖股票的最佳时机II相关的知识,希望对你有一定的参考价值。

122.买卖股票的最佳时机II

思路

  • dp 的定义依旧是 dp[i][0] 表示持有,dp[i][1] 表示没有
  • 可以多次买卖,计算持有时将上次的利润加上。
  • 可以利用滚动数组节约空间
  • 返回滚动数组最后的下标需要用 size 确定
class Solution {
    public int maxProfit(int[] prices) {
        if(prices.length == 1) return 0;
        int size = prices.length;
        int[][] dp = new int[size][2];
        dp[0][0] = -prices[0];
        dp[0][1] = 0;
        for(int i = 1;i < size;i++){
            // 买了还没卖,今天刚买。
            dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]-prices[i]);
            // 没买,今天刚卖了
            dp[i][1] = Math.max(dp[i-1][1],dp[i-1][0]+prices[i]);
        }
        return dp[size-1][1];
    }
}
class Solution {
    public int maxProfit(int[] prices) {
        if(prices.length == 1) return 0;
        int size = prices.length;
        int[][] dp = new int[2][2];
        dp[0][0] = -prices[0];
        dp[0][1] = 0;
        for(int i = 1;i < size;i++){
            dp[i % 2][0] = Math.max(dp[(i-1) % 2][0],dp[(i-1) % 2][1] - prices[i]);
            dp[i % 2][1] = Math.max(dp[(i-1) % 2][1],dp[(i-1) % 2][0] + prices[i]);
        }
        // 滚动最后的下标需要用 size 确定
        return dp[(size-1) % 2][1];
    }
}

以上是关于122.买卖股票的最佳时机II的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode第122题—买卖股票的最佳时机II—Python实现

122. 买卖股票的最佳时机 II

122.买卖股票的最佳时机II

122.买卖股票的最佳时机II

leetcode 122: 买卖股票的最佳时机 II

122. 买卖股票的最佳时机 II