给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。

示例 1:

输入:left = 5, right = 7
输出:4

示例 2:

输入:left = 0, right = 0
输出:0

示例 3:

输入:left = 1, right = 2147483647
输出:0

提示:
0 <= left <= right <= 2^31 – 1

Python 解答:
1.暴力超时

class Solution:
    def rangeBitwiseAnd(self, left: int, right: int) -> int:
        res = left
        for i in range(left+1, right+1):
            res &= i
        return res

2.位操作

class Solution:
    def rangeBitwiseAnd(self, left: int, right: int) -> int:
        i = 0
        while right != left:
            right >>= 1
            left >>= 1
            i += 1
        return left << i
最后修改日期: 2021年8月27日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。