九章算法官网-原文网址
http://www.jiuzhang.com/problem/50/
题目
?在《九章算法面试题23 栈上实现Min函数》中,我们介绍了在栈上实现一个O(1)的Min方法。那么,如何在队列上实现一个Min方法?
要求,队列除了支持基本的Push(x) Pop()的方法以外,还需要支持Min方法,返回当前队列中的最小元素。每个方法的均摊复杂度为O(1)
解答
在九章面试题49《用栈实现队列》和面试题23《栈上实现Min函数》中,我们讲解到了如何用栈实现队列和在栈上实现Min函数。那么将两个题的解法结合起来,就是如何在队列中实现Min函数。简要的步骤如下:
Queue.push(x):
MinStack1.push(x)
Queue.pop():
if MinStack2.empty():
while (!MinStack1.empty()):
MinStack2.push(MinStack1.pop())
return MinStack2.pop()
Queue.min():
return min(MinStack1.min(), MinStack2.min())
时间: 2024-10-13 07:51:01