当前位置: 首页 > article >正文

【图解版】力扣第121题:买卖股票的最佳时机

思路

每天有两个步骤:

  • 更新到今天为止的最低价格(老子前面几天最低点都记下了)
  • 更新到今天为止的最大利润(今天卖能赚多少)
可能会想着:更新从前面到最后一天的最低价格,其实每天更新的时候,维护好自己当前的最小值就可以了,一直遍历到最后,自然而然就得到了全局的最低价格,而且每天的最大利润也是只能和前面遍历过的最低值比较,不能和后面的最低值比较,所以一开始直接取全局最小也没什么意义。

这个转移方程可以写成这样:
最大利润 = max(最大利润 , 今天的价格 − 最低价格)
最低价格 = min(最低价格, 今天的价格)
边界条件:一开始没有最低价格,也没有利润。所以我们从第一天的价格入手,默认最低价格是第一天的价格,利润是0。也可以写成无穷小。

Golang代码实现

func maxProfit(prices []int) int {
    maxProfit := math.MinInt64			// 最大利润
    minNum := math.MaxInt64				// 最小值
    for i := range prices {
        if prices[i] < minNum {
            minNum = prices[i]
        }

        if maxProfit < prices[i] - minNum {
            maxProfit = prices[i] - minNum
        }
    }

    return maxProfit 
}

http://www.kler.cn/a/377349.html

相关文章:

  • Unity3D学习FPS游戏(8)装弹和弹夹UI显示
  • 元戎启行嵌入式面试题及参考答案
  • 关于vue如何监听route和state以及各自对应的实际场景
  • 知乎信息流广告推广开户流程及攻略!
  • 语音识别ic赋能烤箱,离线对话操控,引领智能厨房新体验
  • 网络安全新前沿:防御策略与技术革新
  • 使用贪心策略求解糖果罐调整次数
  • C# 单个函数实现各进制数间转换
  • 设计模式 - 简单工厂模式
  • 使用官网tar包制作OpenSSL及OpenSSH rpm包进行升级安装(OpenSSH_9.9p1, without OpenSSL未解决)
  • 在平衡中追寻高度:探秘AVL树的自我调节之美
  • 基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)
  • 【已解决】element-plus配置主题色后,sass兼容问题。set-color-mix-level() is...in Dart Sass 3
  • 分布式光伏系统开发数字化解决方案
  • ASRPRO 记事本2
  • Linux——— 信号
  • Flutter加载本地HTML的优雅解决方案:轻松实现富文本展示
  • MATLAB 如何判断数据样本是否服从伽马分布(Gamma)
  • 『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC
  • ARM base instruction -- umaddl
  • Kafka 判断一个节点是否还活着有那两个条件?
  • 【代码随想录Day58】图论Part09
  • C/C++语言基础--C++模板与元编程系列三(变量模板、constexpr、萃取等…………)
  • Cpp::set map 的理解与使用(22)
  • Redis常见面试题总结(上)
  • yt-dlp下载视频