Bitwise and of numbers range

September 1, 2022

bit-manipulation

Problem URL: Bitwise and of numbers range

If the right crosses the next 2^n of left where n is the number of bits for left, that means 2^n >= left, then the result is always going to be 0. For example, AND product of 1010 and 10000 will always be 0. We check that and return early. Else we calculate the values manually and return.

class Solution:
    def rangeBitwiseAnd(self, left: int, right: int) -> int:
        if right >= left << 1:
            return 0

        res = right
        for num in range(left, right):
            res &= num

        return res

Time Complexity: O(n)
Space Complexity: O(1)