201.数字范围按位与
2020-07-10
数字范围按位与
输入 [5,8] 返回5&6&7&8的值
题解:
思路1:位运算+滑动窗口
当 m 远> n的时候 例如[5, 99999999] 返回值肯定是0 只要左右端点的二进制数长度不一样 结果就是0 当长度一样的时候 m,n 右移 当m=n的时候 就找到了所以数字的公共前缀 再将右移的位数补0 即是结果var rangeBitwiseAnd = function(m, n) { let zeros = 0; while(m < n) { m >>= 1; n >>= 1; zeros++; } return m << zeros; };