优先队列(Priority Queue):一种特殊的队列。优先队列的出队顺序跟入队顺序无关,优先队列是按照元素的优先级来决定出队顺序的。优先级高的元素优先出队,符合 「最高级先出(First in, Largest out)」 的规则。
使用二叉堆来实现的优先队列效率比较高。
Python 中的 heapq 模块提供了优先队列算法。函数 heapq.heappush() 用于在队列 queue 上插入一个元素。heapq.heappop() 用于在队列 queue 上删除一个元素。
优先队列经典题目
-
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:n = len(nums)if n == 0 or k == 0:return []queue = []res = []head = 0for i in range(n):if head < len(queue) and queue[head] <= i-k:head += 1while head < len(queue) and nums[i] >= nums[queue[-1]]:queue.pop()queue.append(i)if i - k + 1 >= 0:res.append(nums[queue[head]])return res
