Leetcode Bitwise AND of Numbers Range
来源:互联网 发布:短信软件哪个好 编辑:程序博客网 时间:2024/04/30 13:23
题意:求区间内所有数字按位与的结果。
思路:对于区间中的数字,没有进位的情况下是不会出现0的,所以应当考虑需要进位的位数。高位的数字是保持的,只要考虑低位有多少进位。因此用区间的跨度计算进位的个数。
class Solution {public: int rangeBitwiseAnd(int m, int n) { int re = m & n; int p = 0xffffffff; int diff = n - m; while(diff) { p <<= 1; diff /= 2; } return p & re; }};
另一种思路不断去掉末尾的1,直到小于等于原来的值。
class Solution {public: int rangeBitwiseAnd(int m, int n) { while(m < n) n &= n - 1; return n; }};
0 0
- Struts拦截器
- iOS 一句代码轻松实现十六进制颜色(#开头)转RGB颜色
- PAT 乙级 1036. 跟奥巴马一起编程(15)
- Android APK反编译图片资源、Java源码
- 单片机设计
- Leetcode Bitwise AND of Numbers Range
- C ++ 派生类构造函数执行的次序
- linux下启动多个jetty9
- Jsonp调用网易云音乐API搜索播放歌曲
- StringBuffer的append源码解析(模拟源码)
- Vmware CentOS虚拟机网络初始设置
- python 编码转换 unicode和encode作用
- Tesseract-OCR入门使用(2)-VS2010调用API
- ntp服务时间同步状态采集策略