lowbit() 代表的是最后的1和1后面0的值
比如
lowbit(44) -> (101100) ->(100) ->4
lowbit(n)=n&(-n+1)
推算过程如下:
还是以44为例
44 101100
-44 010011
-44+1 010100
44&(-44+1) 000100
lowbit(n)=n&(-n+1)
在树状数组里
经过观察发现每一层末尾的0的个数都是相同的,0个个数与其覆盖的长度有关
t[n]覆盖的长度就是lowbit(n)
n节点的父亲节点 t[n] 为 n+lowbit(n) 这块很神奇
n节点的左侧节点 l[n] 为 n-lowbit(n)
参照网址:https://www.bilibili.com/video/BV1pE41197Qj?from=search&seid=11168892266722482523
本文深入解析了lowbit()函数的工作原理,通过实例展示了如何计算一个数的最低位1及其后续0的值。同时,文章探讨了lowbit()在树状数组中的关键作用,包括节点覆盖长度、父节点与左侧节点的确定方法,为理解树状数组提供了清晰的路径。
2367

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



