优先队列:普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。
二叉堆
- 二叉堆是完全二叉树
- 堆中某个结点的值总是不大于其父节点的值
1 | package head; |
基于堆的优先队列
1 | public interface Queue<E> |
1 | public class PriorityQueue<E extends Comparable<E>> implements Queue<E> |
优先队列经典问题 leecode
在1,000,000个元素选出前100名?(运用最大堆,将100个元素放入堆中,然后比较其他元素比这100个元素中最小的还大,把这个最小的替换出去)
前K个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
1 | import java.util.LinkedList; |