用于快速查找和修改
lowbit
查找最低位1的位置1
2def lowbit(num:int) -> int:
return num & (-num)
区域查询
查询 0 ~ idx 数据的和1
2
3
4
5
6def numSum(arr:list,idx:int):
Sum = 0
while idx > 0:
Sum += arr[idx]
idx -= lowbit(idx)
return Sum
单点更新
更新 idx 的值为 val1
2
3
4
5def updata(arr:list,idx:int,val:int):
lenT = len(arr)
while idx < len:
arr[idx] += val
idx += lowbit(idx)
code
1 | class ArrayTree(): |