您不能创建新的数据结构。
注意:这不是一个家庭作业问题,我正在准备面试,我遇到了这个问题
答案 0 :(得分:5)
1. Pop two elements from the queue.
2. Compare them.
3. Push the lesser one in the queue.
4. Pop another element.
5. Keep repeating from step no. 2.
6. After n-1 comparisons, you will get the largest element in the queue.
7. Push it and repeat the above n-1 times. At each iteration, you need to make one less comparison as the last element is already the maximum.
这将按降序对队列进行排序。对于升序,只需反转比较结果。
注意:上述算法不完整,缺少一小步。我把它留给你识别并修复。
答案 1 :(得分:2)
假设take
从队列前面获取一个元素,offer
将一个元素插入到队列的前面。
sort q :
return if q is empty
a = take q
sort q
insert a q
insert a q:
if q is empty
offer q a
return
b = take q
if a < b
offer q b
offer q a
return
insert a q
offer q b
return
答案 2 :(得分:0)
poll()和offer()逐个每个对象(.size()次)并保存最小值(当前最小值)
poll()并逐个提供()每个对象,并在当前最小值之后扫描下一个更大的对象。如果你找不到下一站 -
poll()和offer()一个接一个,直到您在当前最低之后提供,不要轮询
poll()和offer(),直到您推荐当前最低
在当前最低要求之后,你追踪。这是你现在的最低要求。转到第2步