目录

数据结构(六):有序集合

目录
  • 很多问题需要维护一个有序的集合,根据操作不同,可以选择更优的数据结构
访问 搜索 插入 删除 访问最值 插入最值 删除最值
数组 list O(1) O(logN) O(N) O(N) O(1) O(1) O(1)
队列 deque O(N) O(N) O(N) O(N) O(1) O(1) O(1)
堆 heapq O(N) O(N) O(logN) O(N) O(1) O(logN) O(logN)
AVL/红黑树 O(logN) O(logN) O(logN) O(logN) O(logN) O(logN) O(logN)
  • 从表格可知,AVL/红黑树 是一个很平衡的方案,除非要求某项时间 O(1),否则都是可行的
  • python 中可以调用 sortedcontainers.SortedList 得到接近 AVL/红黑树 的效果,其原理是分块+树状数组

sortedlist

  • 0220 存在重复元素 III
  • 0295 数据流的中位数
  • 0352 将数据流变为多个不相交区间
  • 0363 矩形区域不超过 K 的最大数值和
  • 0480 滑动窗口中位数
  • 0683 K 个关闭的灯泡 双有序集合

扫描线

  • 0218 天际线问题