算法学习—树状数组

lowbit(k)=k&-k

lowbit的作用就是取出数字k的最低位的1及后面的0
如lowbit(6)=2 —> lowbit(110)=10

原始数组为a,树状数组为c

比如说8=1000 ,因为lowbit(8)=8,所以8保存了1-8的所有内容,对于8里面最低位的1,置0后,即0XXX,这些内容都被8覆盖

现在要更新a[5],5为101,所以c[5]要更新,去掉最低位的1之后,给最低位的0进位,即101–>110(这个操作其实就是k+lowbit(k)的操作),对于110来说 他一定覆盖了101(类比8的思想),所以c[110]也要更新

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值