文章目录
所有题目源代码:[Git地址](https://github.com/ch98road/leetcode)题目方案:
所有题目源代码:Git地址
题目
设计一个支持 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 操作总是在 非空栈 上调用。
方案:
#include
<iostream>
#include
<stack>
#include
<math.h>
using namespace
::std
;
class MinStack
{
public:
MinStack()
{
}
void push(int x
)
{
if (st
.size() == 0)
{
st
.push({x
, x
});
}
else
{
st
.push({x
, min(x
, st
.top().second
)});
}
}
void pop()
{
st
.pop();
}
int top()
{
return st
.top().first
;
}
int getMin()
{
return st
.top().second
;
}
private:
stack
<pair
<int, int>> st
;
};