题目:实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
方法一:
用一个栈,每次入栈push两个数(第一个是要入栈的,第二个就是当前最小值),出栈时也出两个
这样栈顶元素就是最小值,代码如下:
class
Stack
{
public
:
void
push
(
int
value
) {
if
(
_data
.
empty
()){
_min
=
value
;
}
if
(
_min
>
value
)
_min
=
value
;