给定范围 [m,n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含m, n两端点)。
例如,给定范围 [5,7],您应该返回 4。

详见:https://leetcode.com/problems/bitwise-and-of-numbers-range/description/

Java实现:

将m和n中的所有整数相与,得到的结果是m和n中的所有数的共同高位保留,除共同高位之外的其他位置零。那么关键问题就是如何找到这个共同的高位,其实并不难,m和n中所有数的共同高位也就是m和n的共同高位。

方法一:

class Solution {
public int rangeBitwiseAnd(int m, int n) {
int res=0;
while(m!=n){
m>>=1;
n>>=1;
++res;
}
return (m<<res);
}
}

方法二:

class Solution {
public int rangeBitwiseAnd(int m, int n) {
while (m < n){
n &= (n - 1);
}
return n;
}
}

C++实现:

class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int offset=0;
while(m!=n)
{
m>>=1;
n>>=1;
++offset;
}
return (m<<offset);
}
};

参考:https://www.cnblogs.com/grandyang/p/4431646.html

最新文章

  1. Kafka设计解析(二)- Kafka High Availability (上)
  2. python 2.6 与 2.4 区别
  3. 虚机centos和本机Windows之间文件的拷贝无法用xftp时用FileZilla也行
  4. 烂泥:U盘安装Centos6.5
  5. 夺命雷公狗---DEDECMS----28dedecms浏览次数的完成
  6. iphone获取当前运行进程列表
  7. Azure 云助手正式发布
  8. [WebService]之JWS_1
  9. oracle 插入timestamp
  10. 李洪强iOS开发之使用CycleScrollView实现轮播图
  11. 判断触摸的点在那个 View上
  12. 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁
  13. linux提取锁和信号灯经常使用
  14. 网络资源(4) - extJS视频
  15. public static void speckOnWin7(string text),在win7中读文字
  16. TortoiseGit HTTPS方式保存密码最简单的方法
  17. 手把手教你ranorex_android自动化测试第一个示例
  18. KB奇遇记(2):缘起
  19. 微信公众号开发笔记1(nodejs开发的)
  20. Sublime编辑器的使用

热门文章

  1. Python - 多次检查后缀名(endwith)
  2. Storm专题二:Storm Trident API 使用具体解释
  3. shuf乱序排列
  4. java里int类型转byte类型
  5. POJ 1927 Area in Triangle(计算几何)
  6. C++ 函数部分(1)
  7. HttpsURLConnection 安全传输(HTTPS--Secure Hypertext Transfer Protocol-安全超文本传输协议)
  8. YTU 1010: 目标柏林
  9. linux永久或临时修改dns
  10. 使用JSTL 对在页面上对 0,0,1 的分割处理 forTokens