min queue

来源:互联网 发布:淘宝用户等级划分 编辑:程序博客网 时间:2024/06/06 20:17

Min Queue, 跟Min Stack类似, 实现一个Queue, 然后O(1)复杂度获得这个Queue里最小的元素。

////www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=193703&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26searchoption%5B3046%5D%5Bvalue%5D%3D2%26searchoption%5B3046%5D%5Btype%5D%3Dradio%26sortid%3D311public class MinQueue {Queue<Integer> queue;// 我那个做法里需要反过来遍历Deque删除所有deque里比当前的x大的元素,queue不能反过来遍历Deque<Integer> deque;public MinQueue() {queue = new LinkedList<Integer>();deque = new ArrayDeque<Integer>();}public void offer(int x) {if (queue.size() == 0) {queue.offer(x);deque.offer(x);} else {queue.offer(x);for (Iterator<Integer> it = deque.descendingIterator(); it.hasNext();) {if (it.next() > x) {it.remove();}}deque.offer(x);}}public int remove() {if (queue.size() == 0)return -1;int val = 0;if (queue.peek() == deque.peek()) {val = queue.remove();deque.remove();} else {val = queue.remove();}return val;}public int getMin() {return deque.getFirst();}}


0 0
原创粉丝点击