【Leetcode】155. 最小栈、JZ31 栈的压入、弹出序列

简介: 155. 最小栈 155. 最小栈题目描述;设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

作者:小卢

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》


155. 最小栈

155. 最小栈

题目描述;

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

实现 MinStack 类:

MinStack() 初始化堆栈对象。

void push(int val) 将元素val推入堆栈。

void pop() 删除堆栈顶部的元素。

int top() 获取堆栈顶部的元素。

int getMin() 获取堆栈中的最小元素。

 

示例:

思路:

利用俩个栈,一个用了正常存储,一个用了存储最小值,遍历正常的栈,如果_st的top小于等于_minst的top,就将这个栈压进去,出栈的话也是类似

代码:

class MinStack {
public:
    MinStack() {
    }
    void push(int val) {
        _st.push(val);
        if(_minst.empty()||val<=_minst.top())
        {
            _minst.push(val);
        }
    }
    void pop() {
        if(_minst.top()==_st.top())
        {
            _minst.pop();
        }
            _st.pop();
    }
    int top() {
return _st.top();
    }
    int getMin() {
return _minst.top();
    }
    private:
    stack<int>_st;
    stack<int>_minst;
};

JZ31 栈的压入、弹出序列

栈的压入、弹出序列_牛客题霸_牛客网

题目描述:

示例:

代码:

class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        stack<int>st;
        int pushi=0;
        int popi=0;
        while(pushi<pushV.size())
        {
            st.push(pushV[pushi++]);
            while(!st.empty()&&st.top()==popV[popi])
            {
                st.pop();
                popi++;
            } 
        }
        return popi==popV.size();
    }
};


相关文章
|
2月前
|
存储 算法
《LeetCode》—— 摆动序列
《LeetCode》—— 摆动序列
LeetCode 热题100——单调栈
LeetCode 热题100——单调栈
19 0
|
2月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
34 6
|
4月前
【Leetcode 2487】从链表中移除节点 —— 单调栈
解题思路:维持一个单调递增栈,当栈为空时,记录当前节点为头节点;否则当前节点为栈顶节点的后继节点
|
4天前
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
5 0
|
4天前
leetcode代码记录(最长连续递增序列
leetcode代码记录(最长连续递增序列
9 2
|
4天前
leetcode代码记录(最长递增子序列
leetcode代码记录(最长递增子序列
7 1
|
5天前
|
算法
leetcode代码记录(摆动序列
leetcode代码记录(摆动序列
8 0
|
26天前
|
C语言
Leetcode每日一题——“用栈实现队列”
Leetcode每日一题——“用栈实现队列”
|
26天前
|
C语言
Leetcode每日一题——“用队列实现栈”
Leetcode每日一题——“用队列实现栈”