优先队列(Priority Queue):一种特殊的队列。优先队列的出队顺序跟入队顺序无关,优先队列是按照元素的优先级来决定出队顺序的。优先级高的元素优先出队,符合 「最高级先出(First in, Largest out)」 的规则。

    使用二叉堆来实现的优先队列效率比较高。
    Python 中的 heapq 模块提供了优先队列算法。函数 heapq.heappush() 用于在队列 queue 上插入一个元素。heapq.heappop() 用于在队列 queue 上删除一个元素。

    优先队列经典题目

    • 239. 滑动窗口最大值 - 力扣(LeetCode)

      1. class Solution:
      2. def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
      3. n = len(nums)
      4. if n == 0 or k == 0:
      5. return []
      6. queue = []
      7. res = []
      8. head = 0
      9. for i in range(n):
      10. if head < len(queue) and queue[head] <= i-k:
      11. head += 1
      12. while head < len(queue) and nums[i] >= nums[queue[-1]]:
      13. queue.pop()
      14. queue.append(i)
      15. if i - k + 1 >= 0:
      16. res.append(nums[queue[head]])
      17. return res