首页 > 其他分享 >【DP】LeetCode 121. 买卖股票的最佳时机

【DP】LeetCode 121. 买卖股票的最佳时机

时间:2023-03-27 16:23:22浏览次数:62  
标签:pre min int max 121 DP prices LeetCode dp

题目链接

121. 买卖股票的最佳时机

思路

状态转移方程为 \(dp[i] = max(0, dp[i - 1], prices[i] - min)\),设置 dp[0] = 0,所以在取最大值的过程中可以省略0,只需要写 dp[i] = Math.max(dp[i - 1], prices[i] - min)。因为如果后面的都是负数的话,取最大值的结果就是 0,所以可以在取最大值的时候省略 0。

代码

dp 数组版

class Solution {
    public int maxProfit(int[] prices) {
        // dp[i] = max(0, dp[i - 1], prices[i] - min)
        if(prices.length == 0){
            return 0;
        }

        int min = prices[0];
        int[] dp = new int[prices.length];
        dp[0] = 0;

        for(int i = 1; i < prices.length; i++){
            dp[i] = Math.max(dp[i - 1], prices[i] - min);
            min = Math.min(min, prices[i]);
        }

        return dp[prices.length - 1];
    }
}

空间优化版

因为 dp[i] 只与 dp[i-1] 有关,所以可以设置一个单变量 pre,不断维护更新 pre,达到更新 dp[i] 的效果。

class Solution {
    public int maxProfit(int[] prices) {
        // dp[i] = max(0, dp[i - 1], prices[i] - min)
        if(prices.length == 0){
            return 0;
        }

        int min = prices[0];
        int pre = 0;

        for(int i = 1; i < prices.length; i++){
            pre = Math.max(pre, prices[i] - min);
            min = Math.min(min, prices[i]);
        }

        return pre;
    }
}

标签:pre,min,int,max,121,DP,prices,LeetCode,dp
From: https://www.cnblogs.com/shixuanliu/p/17261941.html

相关文章

  • LeetCode 周赛 338,贪心 / 埃氏筛 / 欧氏线性筛 / 前缀和 / 二分查找 / 拓扑排序
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。大家好,我是小彭。上周末是LeetCode第338场周赛,你参加了吗?这场周赛覆盖的知识点很多,第四题......
  • 好用的WordPress主机推荐
    在跨境电商领域,我们无论是做B2B传统外贸,还是B2C在线交易,网站是一个必备的媒介。那么,我们搭建网站除了用SaaS工具之外,我们还可以使用Wordpress虚拟主机。我通过我的亲身体......
  • 代码随想录Day13-Leetcode239. 滑动窗口最大值,347.前 K 个高频元素,栈和队列总结
    239.滑动窗口最大值一开始没有思路,暴力了,然后果然超时;看提示中的单调队列没有特别明白;后面反应过来跟单调栈很像;也确实很符合本题的情况,一旦队尾出现更大的数,前......
  • 【DP】LeetCode 剑指 Offer 46. 把数字翻译成字符串
    题目链接剑指Offer46.把数字翻译成字符串思路这个问题与dp中的经典问题“跳台阶”问题十分类似,在跳台阶问题中我们是选择跳一个台阶或者两个台阶,而在这个问题中我......
  • 快慢指针-leetcode141-判断链表中是否有环。
    LeetCode#141题目描述:给定一个链表,判断链表中是否有环。如果链表中存在环,则返回true。否则,返回false。进阶:你能用O(1)(即,常量)内存解决此问题吗?示例1:example1......
  • LeetCode 111.二叉树的最小深度
    1.题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例1:输入:root=[3,9,20,null,null......
  • wordpress 修改上传文件大小限制
    1.新建phpinfo.php文件,通过网页访问。<?phpphpinfo();?>2.在phpinfo网页上找到php.ini所在目录。3.用nano打开php.ini文件并找到下面配置字段,修改成你想要的数值。......
  • LeetCode 202 快乐数
    LeetCode202快乐数题目跳转链接具体实现思路如下:实现一个函数getSum,用来计算一个数各个位上的数字的平方和。具体实现就是对这个数进行除十操作和取余操作,对每个位......
  • P8774 [蓝桥杯 2022 省 A] 爬树的甲壳虫(概率DP)
    [蓝桥杯2022省A]爬树的甲壳虫题目描述有一只甲壳虫想要爬上一颗高度为\(n\)的树,它一开始位于树根,高度为\(0\),当它尝试从高度\(i-1\)爬到高度为\(i\)的位置......
  • [Algorithm] Disk height (DP + back tracking)
    You'regivenanon-emptyarrayofarrayswhereeachsubarrayholdsthreeintegersandrepresentsadisk.Theseintegersdenoteeachdisk'swidth,depth,......