码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 剑指 Offer 30. 包含min函数的栈C++(详解)


    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

    示例:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.min();   --> 返回 -3.
    minStack.pop();
    minStack.top();      --> 返回 0.
    minStack.min();   --> 返回 -2.

    方法

    设置俩个栈,一个数据栈存放数据元素,另一个最小值栈,把最小的值放进去,

    1、如果栈为空,直接x同时放入最小值栈和数据栈,

    2 、将要放进去的元素与最小值栈的栈顶元素进行比较,如果不满足小于最小值的栈顶,仍然放的是之前的最小值栈的栈顶元素,如果小于则把这个元素放到最小值栈上去

    注意(代码的实现方式比较巧妙,如果插入的x大于最小值栈的栈顶元素,那么把此时最小值栈的栈顶元素赋值给x,最终统一的把x放进去就行)

    实现代码

    1. class MinStack {
    2. public:
    3. stack<int>_date;
    4. stack<int>_min;
    5. /** initialize your data structure here. */
    6. MinStack() {
    7. }
    8. void push(int x) {
    9. _date.push(x); //将数据压入数据栈
    10. if(_min.empty()) _min.push(x); //数据栈为空的时候直接插入
    11. else{
    12. if(x > _min.top()) //如果x大于最小栈的栈顶
    13. x = _min.top();
    14. _min.push(x); //将x push进最小的栈
    15. }
    16. }
    17. void pop() { //数据栈与最小栈同时弹出
    18. _date.pop();
    19. _min.pop();
    20. }
    21. int top() {
    22. return _date.top();
    23. }
    24. int min() {
    25. return _min.top();
    26. }
    27. };

  • 相关阅读:
    前端使用Threejs控制机械臂模型运动(我在CSDN的第一篇文章)
    在亚马逊云科技Amazon SageMaker上进行Stable Diffusion模型训练和推理
    opencv调用yolov7 yolov7 c++ yolov7转onnx opencv调用yolov7 onnx
    idea2023全量方法debug
    前端用JavaScript实现桑基图(Sankey图)
    最小生成树 | 市政道路拓宽预算的优化 (Minimum Spanning Tree)
    discuz封面设置失败的解决办法(centos系统+windows系统)
    TCP 滑动窗口详解(非常实用)
    DO280管理和监控OpenShift平台--Web控制台使用
    投入产出公开数据集:世界投入产出表(1995-2014)、全国投入产出表(1990-2018)、分省市投入产出表(1997-2017)
  • 原文地址:https://blog.csdn.net/qq_64691289/article/details/126907320
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号