美文网首页
2020-06-06(实时记录)最小栈

2020-06-06(实时记录)最小栈

作者: 唐moumou | 来源:发表于2020-06-06 23:17 被阅读0次

题目

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

push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/min-stack

思路

从目的出发,是为了获得栈中最小的元素,所以需要一个辅助结构来记录这个最小的值。于是就可以考虑用两个栈,一个专门存储数据的栈,一个存储对应数据栈中最小值的栈。
当MinStack为空时直接将x push 进去
否则 将x与MinStack栈顶元素作比较,将小的push进栈
data进行正常的push操作就行了
所以对于push操作有:

void push(int x) {
        data.push(x);
        if(MIN.empty())
        {
            MIN.push(x);
        }
        else
        {
            if(x<MIN.top())
            {
                MIN.push(x);
            }
            else
            {
                MIN.push(MIN.top());
            }
            
        }
    }

将数据pop出去时,就将对应MinStack栈顶元素push出去即可
所以对于pop操作有:

void pop() {
        data.pop();
        MIN.pop();
    }

其他操作如下:

int top() {
        return data.top();
    }

    int getMin() {
        return MIN.top();
    }

相关文章

  • 2020-06-06(实时记录)最小栈

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

  • Stack

    最大栈,最小栈,要求能实时返回栈中最大值或者最小值的 就需要两个栈,一个栈是正常操作,另一个栈专门记录到此数为止的...

  • 2019-12-11 刷题-3(栈)

    155-最小栈 解法一:此题最简单的做法就是实现两个栈,一个记录当前元素,一个记录当前序列的最小元素。代码: 解法...

  • 腾讯笔试--逛街

    主要的知识点是:单调栈,该题牢牢记得:栈中记录当前楼能看到的元素 单调栈是单调递增栈,栈顶是最小值单调栈存的是能看...

  • LeetCode-155-最小栈

    LeetCode-155-最小栈 155. 最小栈[https://leetcode-cn.com/problem...

  • 最小栈

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

  • 最小栈

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

  • 最小栈

    https://leetcode-cn.com/explore/interview/card/bytedance/...

  • 最小栈

    题目描述 https://leetcode-cn.com/problems/min-stack/ 解 思路 用一个...

  • 最小栈

    题目 难度级别:简单 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 pu...

网友评论

      本文标题:2020-06-06(实时记录)最小栈

      本文链接:https://www.haomeiwen.com/subject/rsgftktx.html