[LeetCode] Min Stack

简介: The idea is to use two stacks. For push, the first stack records the pushed elements and the second stack records all the minimum (including duplicates) that have been seen.

The idea is to use two stacks.

For push, the first stack records the pushed elements and the second stack records all the minimum (including duplicates) that have been seen.

For pop, we need to compare with the top elements of the two stacks. If they are equal (the top element is also minimum, popping it out will change the minimum), pop both; otherwise, only pop the first stack.

The remaining top and getMin will be trivial: just return the top element of the first and second stack respectively.

The code is as follows.

 1 class MinStack {
 2 public:
 3     void push(int x) {
 4         if (stk1.empty() || x <= stk2.top())
 5             stk2.push(x);
 6         stk1.push(x);
 7     }
 8 
 9     void pop() {
10         if (stk1.top() == stk2.top())
11             stk2.pop();
12         stk1.pop();
13     }
14 
15     int top() {
16         return stk1.top();
17     }
18 
19     int getMin() {
20         return stk2.top();
21     }
22 private:
23     stack<int> stk1; 
24     stack<int> stk2;
25 };

 

目录
相关文章
|
8月前
|
算法 安全 Java
【数据结构与算法】6、栈(Stack)的实现、LeetCode:有效的括号
【数据结构与算法】6、栈(Stack)的实现、LeetCode:有效的括号
51 0
|
存储 算法 测试技术
从小白开始刷算法 Stack 栈篇 leetcode.496
从小白开始刷算法 Stack 栈篇 leetcode.496
|
算法
从小白开始刷算法 Stack 栈篇 leetcode.20
从小白开始刷算法 Stack 栈篇 leetcode.20
LeetCode 225. Implement Stack using Queues
使用队列实现栈的下列操作: push(x) -- 元素 x 入栈; pop() -- 移除栈顶元素; top() -- 获取栈顶元素; empty() -- 返回栈是否为空
88 0
LeetCode 225. Implement Stack using Queues
Leetcode-Easy 155. Min Stack
Leetcode-Easy 155. Min Stack
101 0
Leetcode-Easy 155. Min Stack
LeetCode 225:用队列实现栈 Implement Stack using Queues
题目: 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 Implement the following operations of a stack using queues.
1079 0
LeetCode 155:最小栈 Min Stack
LeetCode 155:最小栈 Min Stack 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。
809 0
LeetCode 155 Min Stack(最小栈)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50610602 翻译 设计支持push、pop、top和在常量时间内检索最小元素的栈。
718 0
|
算法
LeetCode 225 Implement Stack using Queues(用队列来实现栈)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50551035 翻译 用队列来实现栈的如下操作。
1384 0