版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
【Leetcode】—155.最小栈
题目描述:
解题思路:
1.首先我们建立两个栈st1,st2,进来的第一个数据我们将他放在st1中,然后接下来进来的每个数据和栈st2中的栈顶元素进行比较。
2.如果比st2中的栈顶元素小或者st1中唯一的元素被pop掉的话就放进st2中,如果相等,就把st2中的栈顶元素pop掉,把st1中的元素也要pop掉。
3.接下来就直接返回st2的栈顶元素就是最小栈了。
代码如下:
class MinStack {
public:
/** initialize your data structure here. */
MinStack()
{
}
void push(int x)
{
st1.push(x);
if(st2.empty() || x<=st2.top())
{
st2.push(x);
}
}
void pop()
{
if(st1.top()== st2.top())
{
st2.pop();
}
st1.pop();
}
int top()
{
return st1.top();
}
int getMin()
{
return st2.top();
}
private:
stack<int> st1;
stack<int> st2;
};