思路:
将问题转化为:求m和n的二进制表示的前缀都为1的个数。
举例:m=5,n=7
5:101
6:110
7:111
求得:bit = 1
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int bit = 0;
while(m != n) {
m >>= 1;
n >>= 1;
bit++;
}
return m << bit;
}
};
本文介绍了一种利用位运算解决区间与问题的方法。通过将问题转化为求解两个数二进制表示中相同前缀为1的数量,进而给出了一种高效的解决方案。示例中详细解释了当m为5,n为7时的具体操作步骤。
1521

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



