数据结构-二进制索引树

1 论文 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.14.8917&rep=rep1&type=pdf

2 解释 Binary Indexed Tree made Easy | HackerEarth

3 应用

1) leetcode 求翻转对

2) 算数编辑器

先记思路之后整理

1 一个整数可以用一组 2 的平方和表示

2 Hamming Weight is the number of 1's in the binary representation of a number.  海明重量是二进制数中 bit 1 的个数

  数组中从1开始的下标所指元素在BIT的深度是下标的 海明重量

3 隔离出一个整数的最低位的 1,以 a = 10(十进制) 为例 a = 1010(二进制), 则设 x = a & (-a) = 1010 & (0101 + 1) = 1010 & 0110 则 x = 0010

4 隔离出去掉一个整数最低位的1之后的数: a = 12 = 0x1100;去掉最后一个1变为0x1000的方法是 a & (a - 1) = 1100 & (1100 - 1)

 = 1100 & 1011 = 0x1000 (延伸:循环利用该方法计算,可快速得到某个整数二进制中 bit 1的个数)

 

延伸:分段索引树

 

先记思路之后整理

posted @ 2020-11-29 22:23  mr_yu  阅读(273)  评论(0编辑  收藏  举报