题目:

  1. 给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。
  2. 示例 1:
  3. 输入: [5,7]
  4. 输出: 4
  5. 示例 2:
  6. 输入: [0,1]
  7. 输出: 0
  8. 来源:力扣(LeetCode
  9. 链接:https://leetcode-cn.com/problems/bitwise-and-of-numbers-range
  10. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

答案:

时间:

10min

  1. class Solution:
  2. def rangeBitwiseAnd(self, m: int, n: int) -> int:
  3. shift=0
  4. while m< n :
  5. shift+=1
  6. m=m>>1
  7. n=n>>1
  8. return m<<shift
  9. # while m < n:
  10. # # 抹去最右边的 1
  11. # n = n & (n - 1)
  12. # return n

要点:

1. 总会有10000……来清零的

所以只要抹去最右边的 1即可

其他:

代码报错:无