树状数组--区间求和

树状数组是一种数据结构,能快速实现区间求和操作。通过将索引视为二进制形式,更新和查询操作的时间复杂度可达O(log n)。要计算区间SUM(n),可以使用n - lowbit(n)的算法,而查询[i, j]区间的和为sum(j) - sum(i - 1)。本文提供了相应的C语言代码实现。" 100570996,7242889,Apache Flink Python API 深入解析与实践指南,"['流处理', '批处理', '大数据', 'Python', 'Apache Flink']
摘要由CSDN通过智能技术生成
        树状数组 是一个查询和修改复杂度都为log(n)的数据结构,假设数组a[1..n],那么查询a[1]+...+a[n]的时间是 log(n)级别的。所以如果要解决“数组中的元素不断被修改,怎么才能快速地获取数组中连续m个数的和”这个问题的话,用树状数组就再好不过了
  首先,什么是树状数组呢?树状数组就是用另外一个数组再保存当前数组的值,设树状数组为C[n],那么有C[i] = a[i - 2^k + 1] + ... + a[i](其中k为i的二进制末尾0的个数)。在这里,2^k代表2的k次方。如果n=8,则c的值如下:
  C1 = A1
  C2 = A1 + A2
  C3 = A3
  C4 = A1 + A2 + A3 + A4
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值