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

121买卖股票的最佳时机解题记录

虽然不清楚卖出是什么时候,买入一定是指向其前面的最小值的。

可以用双指针解决:

func maxProfit(prices []int) int {
    min := prices[0]
    res := 0
    for _,v := range prices {
        if res < v-min {
            res = v-min
        }
        if v < min {
            min = v
        }
    }

    return res
}

但是我想知道单调栈是怎么做的
保证栈顶元素是目前最小的,比栈顶小的就入栈

func maxProfit(prices []int) int {
    stack := []int{prices[0]}
    res := 0 
    for i:=1; i<len(prices); i++ {
        if prices[i] < stack[len(stack)-1] {
			stack = append(stack, prices[i])
		} else {
            // 因为入栈的时候买入绝对是亏的,所以不入栈时可以考虑是否买入
            cur := prices[i] - stack[len(stack)-1]
            if cur > res {
                res = cur
            }
        }
    }
    return res
}

用贪心来解的话,dp[i]=max(dp[i-1], prices[i]-min_prices): 第i天最大利润是前一天卖出的利润或者今天卖出的利润其中最大的

func maxProfit(prices []int) int {
    dp := []int{0}
    min := prices[0]
    for i:=1; i<len(prices); i++ {
        cur := prices[i] - min
        if dp[i-1] > cur {
            dp = append(dp, dp[i-1]) 
        } else {
            dp = append(dp, cur)
        }
        if min > prices[i] {
            min = prices[i]
        }
    }
    return dp[len(dp)-1]
}

相关文章:

  • 数据不互通、审批慢?如何实现多系统智能协同
  • Java实现 自主学习一套身份证识别(识别营业执照信息和语音识别接口)
  • DeepSeek集成:如何将DeepSeek修炼成‘国殇剑舞‘
  • 数据库后续
  • python实现登录页面图形验证码
  • Pydantic字段元数据指南:从基础到企业级文档增强
  • 【软考备考】系统架构设计论文完整范文示例
  • iOS自定义collection view的page size(width/height)分页效果
  • 横扫SQL面试——事件流处理(峰值统计)问题
  • 8.3MW屋顶光伏+光储协同:上海汽车变速器低碳工厂的能源革命-安科瑞黄安南
  • 飞桨PP系列新成员PP-DocLayout开源,版面检测加速大模型数据构建,超百页文档图像一秒搞定
  • 解决 “Cannot read SQL script from class path resource [sql/XX.sql]“ 错误
  • 每日总结3.28
  • 卷积神经网络 - 转置卷积
  • Neo4j GDS-05-neo4j GDS 库中对应的中心性分析算法介绍
  • Netty——零拷贝
  • 上海SMT贴片技术解析与行业趋势
  • 【CSS3】02-选择器 + CSS特性 + 背景属性 + 显示模式
  • axios文件下载使用后端传递的名称
  • PyQt6实例_批量下载pdf工具_exe使用方法
  • 一座与人才共成长的理想之城,浙江嘉兴为何如此吸引人?
  • 体坛联播|利物浦三轮不胜,孙颖莎/王楚钦晋级混双八强
  • CBA官方对孙铭徽罚款3万、广厦投资人楼明停赛2场罚款5万
  • 中共中央、国务院印发《党政机关厉行节约反对浪费条例》
  • 常州新型碳材料集群产值近二千亿,请看《浪尖周报》第24期
  • 中国首颗地质行业小卫星“浙地一号”成功发射