标签:
int lowbit(int pos){
return pos&(-pos); //找出最后的1,并计算出低位有1的值,如6,二进制为110,则求出为10,
}
//由下面的规律可得,树状数组在相应位置会累计数据
void add(int pos, int value){
while(pos < c.size()){
c[pos] += value;
pos += lowbit(pos);
}
}
//求和的时候由于在相应位置有累积数据,需跳跃
int sum(int pos){
int res = 0;
while(pos > 0){
res += c[pos];
pos -= lowbit(pos);
}
return res;
}
树状数组以4为周期,找规律如下:
leetcode中的一个题目
标签:
原文地址:http://www.cnblogs.com/zhaoweiblog/p/5897923.html