0201. Bitwise AND of Numbers Range
https://leetcode.com/problems/bitwise-and-of-numbers-range
Description
Given two integers left
and right
that represent the range [left, right]
, return the bitwise AND of all numbers in this range, inclusive.
Example 1:
**Input:** left = 5, right = 7
**Output:** 4
Example 2:
**Input:** left = 0, right = 0
**Output:** 0
Example 3:
**Input:** left = 1, right = 2147483647
**Output:** 0
Constraints:
0 <= left <= right <= 231 - 1
ac
class Solution {
public int rangeBitwiseAnd(int m, int n) {
int diff = 0;
while (m != n) {
m >>= 1;
n >>= 1;
diff++;
}
return m << diff;
}
}
/**
1. if there is 0 in that digit, then it's 0 all the time.
2. odd & even, last digit is 0
3. if m != n, there must be one odd and one even, at least. so last digit is 0
4. shift m and n right 1 digit every time util they are equal
5. when m == n, move back, all digits on the right should be 0
**/
Last updated
Was this helpful?