201. Bitwise AND of Numbers Range

阅读 61

2022-08-03


Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.

For example, given the range [5, 7], you should return 4.

思路:
等价于求m与n二进制编码中同为1的前缀。

class Solution {
public int rangeBitwiseAnd(int m, int n) {
int bit = 0;
while(m != n) {
m >>= 1;
n >>= 1;
bit++;
}
return m<<bit;
}
}

class Solution {
public int rangeBitwiseAnd(int m, int n) {
int ans = n;
while (ans > m) {
ans = ans & (ans - 1);
}

return ans;
}
}


精彩评论(0)

0 0 举报