首页 > 编程语言 > 详细

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

时间:2015-05-13 10:29:01      阅读:356      评论:0      收藏:0      [点我收藏+]

九章算法官网-原文网址

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

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

原文:http://blog.csdn.net/jiuzhang_ninechapter/article/details/45680445

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!