力扣(Leetcode) 121. 买卖股票的最佳时机

这篇具有很好参考价值的文章主要介绍了力扣(Leetcode) 121. 买卖股票的最佳时机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

示例 1:

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 104
  • 不能用两个for()循环遍历来解题,因为官方在出题是已经在测试用例中限制这超过O(n^2),所以要思考O(n)及以下的方法.

思路:首先不管什么情况,先把简单的情况先列举出来,就像这一题

特殊情况:当数组为空只有一个元素时,不用题干中的条件就可以进行判断,所以就先想如何写这段代码,首先数组为空就可以想到

prices == null

只有一个元素

prices.length < 2||prices.length<=1//这两种表达形式都可以

处理完特殊情况后,就可以考虑常规情况(选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票),这个题因为要前面的和后面的进行比较就需要进行遍历,一提遍历就先想到我们最基础的for循环遍历,再把判断条件写出来

class Solution {
    public int maxProfit(int[] prices) {
        if (prices == null || prices.length < 2) {
            return 0;
        }
        
        for (int i = 1; i < prices.length; i++) {
            if (prices[i] < minPrice) {
                
            } else {
               
            }
        }
        
    }
}

之后就可以思考之间的转换

这里我想的是先写个空变量,再加上首元素(这里思路我觉得是要有些经验就很容易想到),在想下

逻辑转换就出来了.

     假设prices =[7,1,5,3,6,4]

力扣(Leetcode) 121. 买卖股票的最佳时机,leetcode,算法,java

  • class Solution {
        public int maxProfit(int[] prices) {
            if (prices == null || prices.length < 2) {
                return 0;
            }
            
            int minPrice = prices[0];
            int maxProfit = 0;
            
            for (int i = 1; i < prices.length; i++) {
                if (prices[i] < minPrice) {
                    minPrice = prices[i];
                } else {
                    int profit = prices[i] - minPrice;
                    if (profit > maxProfit) {
                        maxProfit = profit;
                    }
                }
            }
            
            return maxProfit;
        }
    }

    结果力扣(Leetcode) 121. 买卖股票的最佳时机,leetcode,算法,java

  • 总结:这题是属于简单题的那种,做这种的主要是思路的积累.文章来源地址https://www.toymoban.com/news/detail-824957.html

到了这里,关于力扣(Leetcode) 121. 买卖股票的最佳时机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode 121. 买卖股票的最佳时机 (贪心 + 动规

    贪心的思路: 得到最小值,再挨个用数组中的值减去最小值,最终值取一个最大的 动规的思路: 现在觉得做动规的关键点就是找出,当前的状态是否与之前的状态有关,也就是说:当前一般会有两种状态,具体哪一种为最优,需要依靠之前的状态及逆行推导。 比如说本题

    2024年02月02日
    浏览(43)
  • LeetCode:121.买卖股票的最佳时机——动态规划

    🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 关于动态规划:LeetCode:322. 零钱兑换——动态规划从案例入门 题目描述 :给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只

    2023年04月17日
    浏览(36)
  • 买卖股票的最佳时机【力扣121】

    假如我们要在第 i 天卖出股票,那么为了获得最大利润,买股票的最佳时间是第 i 天前的最低股价的那一天。 我们使用min来记录已经访问过的 0-i 天的最低股价。那么在第 i 天,如果股价大于min,那么最大利润为price[i]-min;否则最大利润为0,并且min=price[i]。

    2024年02月11日
    浏览(41)
  • 力扣 121. 买卖股票的最佳时机

    题目来源:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/ 好久没写代码了,啥啥都忘了 C++题解1:贪心算法。(来源代码随想录) 因为股票就买卖一次,那么贪心的想法很自然就是取最左最小值,取最右最大值,那么得到的差值就是最大利润。 时间复杂度:O(n) 空

    2024年02月20日
    浏览(33)
  • 算法刷题|121.买卖股票的最佳时机、122.买卖股票的最佳时机Ⅱ

    题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获

    2023年04月26日
    浏览(40)
  • 算法训练第四十九天 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II

    题目链接:121.买卖股票的最佳时机 参考:https://programmercarl.com/0121.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.html 视频讲解:https://www.bilibili.com/video/BV1Xe4y1u77q 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一

    2024年02月01日
    浏览(37)
  • 121.买卖股票的最佳时机 122.买卖股票的最佳时机II

    力扣题目链接(opens new window) 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最

    2024年01月17日
    浏览(38)
  • 《LeetCode》—— 买卖股票的最佳时机

    本期,我将给大家讲解的是有关动态规划类的题—— 买卖股票的最佳时机 。这个系列总共有四道题。接下来,让我们一起去看看!!! 目录 (一)买卖股票的最佳时机 (二)买卖股票的最佳时机 II (三)买卖股票的最佳时机 III (四)买卖股票的最佳时机 IV LeetCode题目链

    2024年02月05日
    浏览(46)
  • 121. 买卖股票的最佳时机

    121. 买卖股票的最佳时机 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/

    2024年02月19日
    浏览(46)
  • LeetCode-题目整理【3】:买卖股票的最佳时机

    买卖股票的最佳时机 都是求最大利润,但是在没有限制,如121和122,动态规划稍微复杂一些,建议不用,到最后两道难题,题目有限制,使用动态规划通过求解子问题的最优解来逐步求解原问题的最优解。 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i]

    2024年01月23日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包