import java.util.LinkedList;
import java.util.Queue;
public class QueueWithMin {
Queue<Integer> queue = new LinkedList<Integer>();
LinkedList<Integer> min = new LinkedList<Integer>();
public void offer(Integer val){
queue.offer(val);
if(min.isEmpty())
min.offer(val);
else {
while(!min.isEmpty() && min.peekLast() > val)
min.pollLast();
min.offerLast(val);
}
}
public Integer poll(){
Integer val = Integer.MIN_VALUE;
if(!queue.isEmpty() && !min.isEmpty()){
val = queue.poll();
if(min.peek() == val)
min.poll();
}
return val;
}
public Integer getMin(){
return min.peek();
}
public static void main(String[] args){
QueueWithMin queue = new QueueWithMin();
queue.offer(12);
System.out.println(queue.getMin());
queue.offer(5);
System.out.println(queue.getMin());
queue.offer(10);
System.out.println(queue.getMin());
queue.offer(7);
System.out.println(queue.getMin());
queue.offer(11);
System.out.println(queue.getMin());
queue.offer(19);
System.out.println(queue.getMin());
queue.poll();
System.out.println(queue.getMin());
queue.poll();
System.out.println(queue.getMin());
queue.poll();
System.out.println(queue.getMin());
}
}
[Random Coding]QueueWithMin
最新推荐文章于 2025-03-25 20:00:00 发布
本文介绍了一种使用Java实现的动态最小值队列,该队列可以在O(1)时间内获取队列中的最小值,并支持常规的队列操作。
4740

被折叠的 条评论
为什么被折叠?



