1.数状数组
1.1 数状数组定义
- 树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&&区间求和.

1.2 数状数组树核心内容:
int low_bit(int x) {
return x & (-x);
}
1.3 数状数组的单点更新:
int add(int pos,int y) {
for(int i = pos;i <= n;i = i + low_bit(i)) {
crr[i] = crr[i] + y;
}
}
1.4 数状数组的区间查询:
int getsum(int x) {
int res=0;
for(int i = x; i >= 1; i = i-low_bit(i)) {
res += crr[i];
}
return res;
}
1.5 数状数组的初始化
for(int i = 1; i <= n; i++) {
cin >>x ;
add(i,x);
}
1.6 数状数组应用:
- 题目:LeetCode求逆序对
本文详细介绍了树状数组这一数据结构,包括其定义、单点更新、区间查询、初始化过程以及在LeetCode逆序对问题中的应用。树状数组是一种支持高效查询和修改操作的数据结构,主要解决数组的单点修改和区间求和问题。

1298

被折叠的 条评论
为什么被折叠?



