【面试题】实现一个栈,要求Push(入栈),Pop(出栈),Min/Max(返回最小/大值的操作)的时间复杂度为O(1)

【面试题】实现一个栈,要求Push(入栈),Pop(出栈),Min/Max(返回最小/大值的操作)的时间复杂度为O(1)

  1. 方案一:使用一个栈,每次push/pop的时候,都把当前的元素和最大/小值进行入栈/出栈操作
操作s1min
push 44,44
push 34,4,3,33
push 54,4,3,3,5,33
pop4,4,3,33
pop4,44
pop
  1. 方案二:使用两个栈,一个栈存所有的元素,另一个辅助栈存储最大/最小值
操作s1s2
push 444
push 34,34,3
push 34,3,34,3,3
push 54,3,3,54,3,3
push 24,3,3,5,24,3,3,2
push 14,3,3,5,2,14,3,3,2,1
push 14,3,3,5,2,1,14,3,3,2,1,1
pop4,3,3,5,2,14,3,3,2,1
pop4,3,3,5,24,3,3,2
pop4,3,3,54,3,3
pop4,3,34,3,3
pop4,34,3
pop44
pop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值