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

本文介绍了两种方法实现一个栈,保证Push、Pop和Min操作的时间复杂度为O(1)。方法一是通过一个栈存储数据和最小值,每次操作更新最小值;方法二是使用两个栈,一个存储数据,一个存储最小值,根据入栈和出栈条件调整栈的状态。
最低0.47元/天 解锁文章
3450

被折叠的 条评论
为什么被折叠?



