区间修改 & 查询
文章目录
树状数组
优势:单点修改,区间查询
时间复杂度: O ( log n ) O (\log_n) O(logn)
存储原理
- A:原数组
- C:构造数组
- 对于每一个
C [i]
,共存 2 k 2^k 2k个元素,k
为i
二进制下末尾0的个数
C [ 1 ( 1 ) ] = A [ 1 ] C [ 2 ( 10 ) ] = A [ 1 ] + A [ 2 ] C [ 3 ( 11 ) ] = A [ 3 ] C [ 4 ( 100 ) ] = A [ 1 ] + A [ 2 ] + A [ 3 ] + A [ 4 ] C [ 5 ( 101 ) ] = A [ 5 ] C [ 6 ( 110 ) ] = A [ 5 ] + A [ 6 ] C [ 7 ( 111 ) ] = A [ 7 ] C [ 8 ( 1000 ) ] = A [ 1 ] + A [ 2 ] + A [ 3 ] + A [ 4 ] + A [ 5 ] + A [ 6 ] + A [ 7 ] + A [ 8 ] … … C [ i ] = A [ i − 2 k + 1 ] + A [ i − 2 k + 2 ] + … … + A [ i ] C [1 \ (1)] = A [1] \ \\ C [2 \ (10)] = A [1] + A [2] \\ C [3 \ (11)] = A [3] \\ C [4 \ (100)] = A [1] + A [2] + A [3] + A [4] \\ C [5 \ (101)] = A [5] \\ C [6 \ (110)] = A [5] + A [6] \\ C [7 \ (111)] = A [7] \\ C [8 \ (1000)] = A [1] + A [2] + A [3] + A [4] + A [5] + A [6] + A [7] + A [8] \\ …… \\ C [i] = A [i - 2 ^ k + 1] + A [i - 2 ^ k + 2] + …… + A [i] C[1 (1)]=A[1] C[2 (10)]=A[1]+A[2]C[3 (11)]=