...
| 代码块 |
|---|
#define MAXN 1005
int a[MAXN];
int c[MAXN];
int n;
void init() {
for(int i = 1; i <= n; i++) {
c[i] += a[i];
int j = i + lowbit(i);
if(j <= n) c[j] += c[i];
}
} |
示例例题:
- 307. 区域和检索 - 数组可修改 - 力扣(LeetCode)
- 思路:考虑使用树状数组,有以下注意点:
1.保存原数组
2.数组下标从0开始
3.传入的val要转化成diff = val-nums[i]
4.求区间和转化成求两次前缀和再作差
- 思路:考虑使用树状数组,有以下注意点: