201. 数字范围按位与
https://leetcode-cn.com/problems/bitwise-and-of-numbers-range/
解法一:
思路是找出m和n相同和不同的部分。相同部分与之后结果不变,不同部分与结果为0。每次n,m左移一位,直到n==m,用move来统计移动的位数(不同的位数)。最后用m*move还原(即给m补0)。
class Solution:
def rangeBitwiseAnd(self, m: int, n: int) -> int:
#边界,不加也行,不过慢
if m == 0:
return 0
move = 1
while n != m:
n >>= 1
m >>= 1
move <<= 1
return m * move
最后更新于