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

155. 最小栈

题目来源:leetcode155. 最小栈 - 力扣(LeetCode)

题目:如下

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

答案:如下图

class MinStack {
public:

    void push(int val) {
        st.push(val);
        if(minst.empty()||val<=minst.top())
        {
            minst.push(val);
        }
    }
    
    void pop() {
        if(st.top()==minst.top())
        {
            minst.pop();
        } 

        st.pop();
    }
    
    int top() {
        return st.top();
    }
    
    int getMin() {
        return minst.top();
    }

    stack<int> st;
    stack<int> minst;


};

解析:

(1)建立栈

我们可以设计两个栈,一个用于储存所有的值st栈,另一个储存比st栈的第一个进栈的数小于等于的数

stack<int> st;
stack<int> minst;

(2)push接口

使用push接口进栈,st将val全部进栈,开始时,st和minst栈都没有数据,当第一个数进栈st的时候,自然就是最小数,我们就将其拉取进去minst栈中。

min栈中最后一个数作为衡量目前最小数的标准,当比相等或者比其小的时候就入栈

    void push(int val) {
        st.push(val);
        if(minst.empty()||val<=minst.top())
        {
            minst.push(val);
        }
    }

(3)pop接口

先判断,当minst的中的最小值对应st中的top的要被出栈的值的时候就对应的把minst中的最小值出掉

void pop() {
        if(st.top()==minst.top())
        {
            minst.pop();
        } 

        st.pop();
    }

(4)top()接口

返回当前st栈顶的值

int top() {
return st.top();

}

(5)getMin() 接口

由于minst栈中储存的是按次序排序的最小值,返会其栈顶的值即可

int getMin() {
return minst.top();

}

到这里我们讲解完毕

如果对您有帮助的话点一个免费的赞和收藏叭!

由于作者水平不足,如有任何错误,请读者在评论区交流!


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

相关文章:

  • 基于kraft部署kafka集群
  • Linux挖矿程序排查
  • 大语言模型学习工具及资源总结和落地应用
  • 贪心算法(三)
  • “檢測到不安全的代理”怎麼修復?
  • 【文档搜索引擎】搜索模块的完整实现
  • EasyExcel停更,FastExcel接力
  • 联通光猫怎么自己改桥接模式?
  • WebStorm 创建一个Vue项目
  • [Unity Shader] 【图形渲染】Shader数学基础12-坐标空间变换
  • B树的实现
  • 具身智能打响争夺战:自主感知、行动与进化简史(连载1)
  • Ubuntu国内安装Gradle
  • 免费 IP 归属地接口
  • stm32定时器输出比较----驱动步进电机
  • 时频转换 | Matlab暂态提取变换transient-extracting transform一维数据转二维图像方法
  • VUE 3.0 如何新建项目 详细教程 附环境搭建 推荐
  • SAP SD销售订单处理流程
  • 《探秘 OpenCV 各版本的奇妙世界》
  • 施耐德变频器ATV320系列技术优势:创新与安全并重
  • React 第十九节 useLayoutEffect 用途使用技巧注意事项详解
  • 大语言模型中的Agent优势及相关技术;Agent和RAG区别
  • 对BG兼并点的理解-不断刷新版
  • golangci-lint安装与Goland集成
  • 《算法》题目
  • 13. 导出与导入镜像