精选算法面试 - 优先队列
一.简介
Java 中 PriorityQueue 通过二叉小顶堆实现,可以用一棵完全二叉树表示。
二.示例
2.1 数据流中的第 K 大元素
设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。
示例
复制代码
复制代码
2.2 滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。
示例
复制代码
优先级队列实现
复制代码
双端队列
复制代码
参考
https://leetcode-cn.com/problems/sliding-window-maximum/
https://leetcode-cn.com/problems/kth-largest-element-in-a-stream/discuss/149050/Java-Priority-Queue/
版权声明: 本文为 InfoQ 作者【李孟】的原创文章。
原文链接:【http://xie.infoq.cn/article/f1cfffdc8f6494453d7c49c30】。文章转载请联系作者。
评论