其实在一个range内 只要看两个边界就可以了
一定是在高位的连续几位会都相同 之后的几位会vary 后面一定会全是0 所以一直把m n右移 计数 然后知道他们完全相同
完全相同之后再后面补足之前计数的个数0
public class Solution {
public int rangeBitwiseAnd(int m, int n) {
int diffNum = 0;
while ( m != n ){
m >>= 1;
n >>= 1;
diffNum ++;
}
return n << diffNum;
}
}

本文介绍了一种利用位运算优化算法,在给定范围内快速找出高位连续相同的位数,并在之后补足相应数量的零的方法。通过实例演示和代码实现,展示了该技巧在编程中的应用。
1525

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



