122.买卖股票的最佳时机ii(代码片段)

HardyDragon_CC HardyDragon_CC     2023-01-15     217

关键词:

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(代码片段)

122.买卖股票的最佳时机II给定一个数组prices,其中prices[i]是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。**注意:**你不能同时... 查看详情

122.买卖股票的最佳时机ii(代码片段)

.../best-time-to-buy-and-sell-stock-ii/solution/暴力  本题可以多次买卖股票,如果只允许一次买卖股票,整个暴力就是n2的算法,如果可以无限制买卖股票直接用普通的写法不是很好写,可以用递归来解决。先考虑只允许一次买卖的暴力... 查看详情

c_cpp122.买卖股票的最佳时机ii(代码片段)

查看详情

力扣no.122买卖股票的最佳时机ii(代码片段)

力扣No.122买卖股票的最佳时机II给定一个数组prices,其中 prices[i]是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能... 查看详情

力扣no.122买卖股票的最佳时机ii(代码片段)

力扣No.122买卖股票的最佳时机II给定一个数组prices,其中 prices[i]是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能... 查看详情

贪心算法--122.买卖股票的最佳时机ii(代码片段)

力扣给定一个数组prices,其中 prices[i]表示股票第i天的价格。在每一天,你可能会决定购买和/或出售股票。你在任何时候 最多 只能持有一股股票。你也可以购买它,然后在同一天出售。返回你能获得的最大利润 ... 查看详情

力扣题解122th买卖股票的最佳时机ii(代码片段)

122th买卖股票的最佳时机II游标思想定义:index为判断游标,valley表示波谷点,peak表示波峰点。例如对于数据[7,1,5,3,6,4],第一个波谷-波峰为1-5,第二个波谷波峰为3-6。显然,1-5的差为4,3-6的查为3,它们的和为7,而1-6的和仅为5... 查看详情

leetcode刷题python122.买卖股票的最佳时机ii(代码片段)

1题目给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大... 查看详情

代码随想录算法训练营第四十九天|121买卖股票的最佳时机122买卖股票的最佳时机ii(代码片段)

代码随想录算法训练营第四十九天|121买卖股票的最佳时机122买卖股票的最佳时机IILeetCode121买卖股票的最佳时机题目:121.买卖股票的最佳时机动规五部曲:确定dp数组以及下标的含义**dp[i][0]表示第i天持有股票所得最多现金**确... 查看详情

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

...获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例1:输入:[7,1,5,3,6,4]输出:7解释:在第2天(股票价格=1)的时候买入,... 查看详情

力扣no.122买卖股票的最佳时机ii(代码片段)

力扣No.122买卖股票的最佳时机II给定一个数组prices,其中 prices[i]是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能... 查看详情

122.买卖股票的最佳时机ii(代码片段)

1/*2[7,1,5,6]第二天买入,第四天卖出,收益最大(6-1),所以一般人可能会想,怎么判断不是第三天就卖出了呢?3这里就把问题复杂化了,根据题目的意思,当天卖出以后,当天还可以买入,所以其实可以第三天卖出,第三天买入... 查看详情

剑指[63]_股票的最大利润问题;力扣[122]_买卖股票的最大利润时机ii(代码片段)

...来源:剑指Offer63.股票的最大利润本题与力扣121题相同:121.买卖股票的最佳时机题目描述:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例1:输入:[7,1,5,3,6,4]输出:5... 查看详情

122.买卖股票的最佳时机ii(代码片段)

        思路:想到:prices中一列数字,任取一个为买入价格buy,在其右边任取一个为卖出价格sell;取[buy,...,sell]区间中相邻数字之差,这些差值求和为sum,则必有sell-buy=sum;本题中求最大收益,所以... 查看详情

leetcode122.besttimetobuyandsellstockii买卖股票的最佳时机ii(简单)

每天可以无限次买卖,但是只能持有一支股票。想有最大利润,就得低价买高价卖。如果第二天价格比当前价格高,我们就卖出,把差价加入利润中。若后天价格更高,我们还可以在第二天卖出后再买入。以此类推,遍历完整个... 查看详情

golang122买入股票的最佳时机ii(代码片段)

查看详情

lc买卖股票的最佳时机ii(代码片段)

LC买卖股票的最佳时机II给定一个数组prices,其中prices[i]是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与... 查看详情

买卖股票的最佳时机ii(代码片段)

...获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入:[7,1,5,3,6,4]输出:7解释:在第2天(股票价格=1)的时候买入,在第3... 查看详情