【刷题-LeetCode】201 Bitwise AND of Numbers Range
2024-10-19 17:27:55
- Bitwise AND of Numbers Range
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.
Example 1:
Input: [5,7]
Output: 4
Example 2:
Input: [0,1]
Output: 0
解法1 一个一个做位与,但是会超时。。。
解法2 事实:
- 与运算中,只要有一个是0,结果肯定是0
- 将二进制数字看作是字符串时,m和n的共同前缀也是范围[m, n]中所有数字的共同前缀
因此只需要求出m和n的共同前缀即可
解法2.1 移位。将m和n逐一向右移位,直到两者相等
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int shift = 0;
while(m != n){
m >>= 1;
n >>= 1;
shift++;
}
return m << shift;
}
};
解法2.2 Brian Kernighan's Algorithm。n&(n-1)会将n中最右边的1翻转为0
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
while(m < n)n &= n - 1;
return m & n;
}
};
最新文章
- 用普通计算机假设基于liunx系统的NAS部署FineReport决策系统
- ngrok反向隧道--获取内网IP
- [Scala] 快学Scala A3L3
- (原创)QuartusII设置虚拟引脚(Virtual Pin)
- Android Studio修改包名和applicationId的方法
- Android+OpenCV 摄像头实时识别模板图像并跟踪
- C# 给picturebox添加滚动条
- [转贴]xcode帮助文档
- Mysqldb连接Mysql数据库(转)
- RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复
- 使用Android简单实现有道电子词典
- 不要在Android的Application对象中缓存数据!
- Tensorflow基本概念
- Linux - 账户切换授权
- 《linux内核设计分析》 第一周作业
- 对 JavaScript 下 namespace 功能的简单分析
- Java的动态编译、动态加载、字节码操作
- php箭头符号
- 【RF库测试】DateTime库
- UVA-10410 Tree Reconstruction (树重建)
热门文章
- CF667A Pouring Rain 题解
- cmake之指定clang(++)编译器为默认编译器
- 【LeetCode】526. Beautiful Arrangement 解题报告(Python & C++)
- 【LeetCode】521. Longest Uncommon Subsequence I 解题报告(Python)
- 如何把 MySQL 备份验证性能提升 10 倍
- 【感悟】观《BBC彩色二战纪录片》有感
- 从源码看全局异常处理器@ExceptionHandler&;@ExceptionHandler的生效原理
- MySQL数据操作与查询笔记 • 【第3章 DDL 和 DML】
- Unity——卡通渲染实现
- PostgreSQL相关知识概念