Bitwise AND of Numbers Range

Desicription

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

Example 1:

1
2
Input: [5,7]
Output: 4

Example 2:

1
2
Input: [0,1]
Output: 0

Solution

1
2
3
4
5
6
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
return n>m?(rangeBitwiseAnd(m>>1, n>>1) << 1):n;
}
};