LeetCode之最小栈(一百五十五)
目录
题目
(原题链接:https://leetcode-cn.com/problems/min-stack/)
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
示例:
输入:
["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.
提示:pop、top 和 getMin 操作总是在 非空栈 上调用。
解题
分析:因为pop,top,getMin操作总是在非空栈上调用,因此不用判断目标栈是否为空。
代码:(C++)
-
class MinStack {
-
public:
-
stack<int> data;
-
stack<int> dataMin;
-
-
/** initialize your data structure here. */
-
MinStack() {
-
dataMin.push(INT_MAX);
-
}
-
-
void push(int x) {
-
data.push(x);
-
dataMin.push(min(dataMin.top(), x));
-
}
-
-
void pop() {
-
data.pop();
-
dataMin.pop();
-
}
-
-
int top() {
-
return data.top();
-
}
-
-
int getMin() {
-
return dataMin.top();
-
}
-
};
-
-
/**
-
* Your MinStack object will be instantiated and called as such:
-
* MinStack* obj = new MinStack();
-
* obj->push(x);
-
* obj->pop();
-
* int param_3 = obj->top();
-
* int param_4 = obj->getMin();
-
*/
执行结果:

文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。
原文链接:liuzhen.blog.csdn.net/article/details/107454064
- 点赞
- 收藏
- 关注作者
评论(0)