【数据结构】前缀和与差分、树状数组与线段树

前缀和与差分、树状数组与线段树概述


前置知识
  • 前缀和
  • 差分
  • 树状数组
  • 线段树

我们知道,前缀和、差分、树状数组与线段树是四个用来处理区间问题的数据结构。接下来,作者为大家准备了这四种数据结构的一些特征。
注:本文讨论一维情况。


时间复杂度比较

下表整理了各个数据结构适用的一些基础区间问题。
以下 n n n 为元素个数, m m m 为修改次数, q q q 为查询个数。

数据结构适用的基础区间问题及其实现的时间复杂度是否在线
前缀和单点修改区间查询 O ( n + m + q ) O(n+m+q) O(n+m+q)
差分区间修改单点查询 O ( n + m + q ) O(n+m+q) O(n+m+q)
树状数组单点修改区间查询 O ( m log ⁡ n + q log ⁡ n ) O(m\log n+q\log n) O(mlogn+qlogn)
线段树单点修改区间查询 O ( m log ⁡ n + q log ⁡ n ) O(m\log n+q\log n) O(mlogn+qlogn),区间修改区间查询 O ( m log ⁡ n + q log ⁡ n ) O(m\log n+q\log n) O(mlogn+qlogn)

当然,我们还可以使用双重数据结构来维护一些特殊问题。

数据结构适用的基础区间问题及其实现的时间复杂度是否在线
前缀和与差分区间修改区间查询 O ( n + m + q ) O(n+m+q) O(n+m+q)
差分与树状数组区间修改单点查询 O ( m log ⁡ n + q log ⁡ n ) O(m\log n+q\log n) O(mlogn+qlogn)

空间复杂度比较

有了时间复杂度,当然还要讨论空间复杂度。
下表与上文一一对应。

数据结构适用的基础区间问题及其实现的时间复杂度是否在线
前缀和单点修改区间查询 O ( n ) O(n) O(n)
差分区间修改单点查询 O ( n ) O(n) O(n)
树状数组单点修改区间查询 O ( n ) O(n) O(n)
线段树单点修改区间查询 O ( n log ⁡ n ) O(n\log n) O(nlogn),区间修改区间查询 O ( n log ⁡ n ) O(n\log n) O(nlogn)

当然,我们还可以使用双重数据结构来维护一些特殊问题。

数据结构适用的基础区间问题及其实现的时间复杂度是否在线
前缀和与差分区间修改区间查询 O ( n ) O(n) O(n)
差分与树状数组区间修改单点查询 O ( n ) O(n) O(n)

以上就是关于前缀和、差分、树状数组与线段树的比较了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值