run到位运算。
顿悟:
只看第一个二进制位,只存在0,1两种情况,所以如果left<right,区间中必然存在left+1,那么最低位&一下一定等于0了,然后不停的右移,一直移到两个相等为止,就这么简单
class Solution:def rangeBitwiseAnd(self, left: int, right: int) -> int:shift=0while left<right:left>>=1right>>=1shift+=1#left等于right就可以返回了return left<<shift
多种方法的官解