leetcode-155:最小栈

简介: leetcode-155:最小栈

题目

题目连接

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

实现 MinStack 类:

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

示例 1:

输入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
输出:
[null,null,null,null,-3,null,0,-2]
解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.

解题

剑指 Offer 30:包含min函数的栈一样

方法一:辅助栈

class MinStack {
public:
    stack<int> st1;
    stack<int> st2;
    MinStack() {
    }
    void push(int val) {
        if(st1.empty()) st2.push(val);
        else st2.push(min(val,st2.top()));
        st1.push(val);
    }
    void pop() {
        st1.pop();
        st2.pop();
    }
    int top() {
        return st1.top();
    }
    int getMin() {
        return st2.top();
    }
};
相关文章
|
5月前
|
Go
【LeetCode 热题100】155:最小栈(详细解析)(Go语言版)
本文详细解析了力扣热题155:最小栈的解题思路与实现方法。题目要求设计一个支持 push、核心思路是使用辅助栈法,通过两个栈(主栈和辅助栈)来维护当前栈中的最小值。具体操作包括:push 时同步更新辅助栈,pop 时检查是否需要弹出辅助栈的栈顶,getMin 时直接返回辅助栈的栈顶。文章还提供了 Go 语言的实现代码,并对复杂度进行了分析。此外,还介绍了单栈 + 差值记录法的进阶思路,并总结了常见易错点,如 pop 操作时忘记同步弹出辅助栈等。
171 6
|
Python
【Leetcode刷题Python】155. 最小栈
LeetCode上题目“155. 最小栈”的Python解决方案,通过维护一个包含当前值和最小值的元组栈来实现在常数时间内获取栈中最小元素的功能。
92 2
|
存储 算法 Java
LeetCode刷题155-简单-最小栈
LeetCode刷题155-简单-最小栈
183 0
LeetCode刷题155-简单-最小栈
|
Go
golang力扣leetcode 155.最小栈
golang力扣leetcode 155.最小栈
78 0
|
存储 算法 vr&ar
☆打卡算法☆LeetCode 155. 最小栈 算法解析
☆打卡算法☆LeetCode 155. 最小栈 算法解析
|
存储
【Leetcode】155. 最小栈、JZ31 栈的压入、弹出序列
155. 最小栈 155. 最小栈 题目描述; 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
79 0
|
算法
LeetCode-155. 最小栈(day35)
LeetCode-155. 最小栈(day35)
145 0
|
存储 算法
leetcode算法155.最小栈
本文介绍如何设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
183 0
leetcode算法155.最小栈
|
算法 Python
<LeetCode天梯>Day042 最小栈 | 初级算法 | Python
<LeetCode天梯>Day042 最小栈 | 初级算法 | Python
<LeetCode天梯>Day042 最小栈 | 初级算法 | Python