九章算法面试题50 队列上实现Min函数

时间:2015-05-13 10:29:19   收藏:0   阅读:151

九章算法官网-原文网址

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())

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!