201. 数字范围按位与

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

  • 示例 1:

    1
    2
    输入:left = 5, right = 7
    输出:4
  • 示例 2:

    1
    2
    输入:left = 0, right = 0
    输出:0
  • 示例 3:

    1
    2
    输入:left = 1, right = 2147483647
    输出:0
  • 提示:

    1
    0 <= left <= right <= 231 - 1

题解

1
2
3
4
5
6
7
8
9
10
var rangeBitwiseAnd = function(m, n) {
let shift = 0;
// 找到公共前缀
while (m < n) {
m >>= 1;
n >>= 1;
++shift;
}
return m << shift;
};