数字范围按位与
07/03/2021
题目描述
给你两个整数 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 <= 231 - 1
本人题解
/**
* @param {number} m
* @param {number} n
* @return {number}
*/
var rangeBitwiseAnd = function(m, n) {
if (m === n) {
return m & n
} else if (m === 0) {
return 0
} else {
var b = get2(m);
if (b < n) {
return 0
}
var a = m & m + 1;
for (var i = m + 1; i < n+1; i++) {
a = a & i;
}
return a;
}
}
var get2 = function(num) {
for (var i = 1; ; i = i * 2) {
if (num < i) {
return i
}
}
}分析
忘了。以后再补