201. Bitwise AND of Numbers Range
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.
Example 1:
Input: [5,7]
Output: 4
Example 2:
Input: [0,1]
Output: 0
int rangeBitwiseAnd(int m, int n) { // time: O(1); space: O(1)
while (n > m) {
n &= (n - 1);
}
return n;
}
int rangeBitwiseAnd(int m, int n) { // time: O(1); space: O(1)
int i = 0;
while (m != n) {
m >>= 1;
n >>= 1;
++i;
}
return m << i;
}
Last updated
Was this helpful?