leetcode155. 最小栈
Posted The August
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode155. 最小栈相关的知识,希望对你有一定的参考价值。
设计一个支持 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 操作总是在 非空栈 上调用。
思路:
getMin函数实现:提供两个栈
其余接口函数跟stack的函数接口实现方法一样,pop、push、top只需在_st栈中实现即可
代码如下:
class MinStack
public:
//可以不用写构造、析构、拷贝、赋值等函数,用stack会默认初始化
MinStack()
void push(int val)
_st.push(val);
if(_minst.empty()||val<=_minst.top())
_minst.push(val);
void pop()
if(_st.top()==_minst.top())
_minst.pop();
_st.pop();
int top()
return _st.top();
int getMin()
return _minst.top();
stack<int> _st; //最小元素的栈
stack<int> _minst; //找寻栈中最小元素
;
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/
以上是关于leetcode155. 最小栈的主要内容,如果未能解决你的问题,请参考以下文章