思路:模拟一遍L-R进行与运算的结果可以发现L,R的二进制位从高到低第一个不相同的位置后面全是0。我们只需要判断前面二进制位是否为1并转为10进制数
代码:
class Solution {
public:
int rangeBitwiseAnd(int left, int right) {
int res=0;
for(int i=30;i>=0;i--){
if((left>>i&1)!=(right>>i&1)) break;
if((left>>i&1)) res+=1<<i;
}
return res;
}
};