赞
踩
按照自定义的方式来对队列中的数据进行动态排序,默认最大堆,即队列top为最大的元素。
可以重写PriorityQueue的Comparator进行排序定义。
堆是一颗顺序存储的完全二叉树。、
1.最小堆
每个节点的关键字都不大于起孩子节点的关键字
2.最大堆 (默认)
每个结点的关键字都不小于其孩子结点的关键字
- // 优先队列-最小队列,可以不设置队列大小
- // peek() 取出最上层元素
- // remove() 删除最上层元素
- package Queue;
-
- import java.util.*;
- public class SeatManager {
- private int start;//座位号数
- private PriorityQueue<Integer> minheap;
- private int[] arr;
- public SeatManager(int n) {
- this.start=0;
- this.minheap = new PriorityQueue<Integer>(new Comparator<Integer>() {
- @Override
- public int compare(Integer o1, Integer o2) {
- return o1 - o2;
- }
- });
- }
-
- public int reserve() {
- if (this.minheap.isEmpty()){
- this.start=this.start+1;
- return this.start;
- }else{
- int value = this.minheap.peek();
- this.minheap.remove();
- return value;
- }
- }
-
- public void unreserve(int seatNumber) {
- this.minheap.add(seatNumber);
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。