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;
};

 

posted @ 2020-07-10 16:10  蓝小胖纸  阅读(122)  评论(0编辑  收藏  举报