今天将1483-树节点的第k个祖先留的那个倍增代码写了一下。
有以下几点需要借鉴的:
- 向上取整(log2(x))的计算方法
ceil(log2(x)) = 32 - Integer.numberOfLeadingZeros(x - 1)
- 判断第i位是否为1的方式,我原先是判断k%2是否为1,将k减半,循环。其实可以使用位运算
((k >> i) & 1) == 1
i从0自增,将k右移i位与1相与,得到i位上的值
今天将1483-树节点的第k个祖先留的那个倍增代码写了一下。
有以下几点需要借鉴的:
ceil(log2(x)) = 32 - Integer.numberOfLeadingZeros(x - 1)
((k >> i) & 1) == 1
i从0自增,将k右移i位与1相与,得到i位上的值