代码随想录训练营第四十九天 | 动态规划

今天是第四十九天,用动态规划的思想去解决之前用贪心算法解决的股票买卖问题

 

  121. 买卖股票的最佳时机 

复制代码
class Solution {
    public int maxProfit(int[] prices) {
        int n = prices.length;
        if(n == 1){
            return 0;
        }
        int[] dp = new int[n];
        dp[0] = 0;
        int min = prices[0];
        for(int i = 1; i<n; i++){
            if(prices[i] < min){
                min = prices[i];
            }
            dp[i] = Math.max(dp[i-1], prices[i] - min);
        }
        return dp[n-1];

    }
}
复制代码

看当前利润和当前价格减去之前最小值,这两个值哪个利润最大,哪个就保留在dp[i]中为当前最大利润。

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

复制代码
class Solution {
    public int maxProfit(int[] prices) {
        int n = prices.length;
        if(n ==1){
            return 0;
        }
        int[] dp = new int[n];
        dp[0] = 0;
        
        for(int i = 1; i<n; i++){
            
            dp[i] = Math.max(dp[i-1], dp[i-1] + prices[i]-prices[i-1]);
        }
        return dp[n-1];
    }
}
复制代码

和贪心一样的思路,如果昨天的价格比今天低,那就可以卖了,然后如果明天价格比今天还高,那么今天再买。

 

总体来说今天的题都很简单,都是用dp来实现贪心的思想,加油。

posted @   小猫Soda  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示