给你两个整数 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
留言