

LeetCode 第 201 号问题:数字范围按位与
source link: https://www.cxyxiaowu.com/6922.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文首发于公众号「五分钟学算法」,是图解 LeetCode 系列文章之一。
题目来源于 LeetCode 上第 号问题:。题目难度为 Medium,目前通过率为 39.1% 。
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。
示例 1:
输入: [5,7]
输出: 4
示例 2:
输入: [0,1]
输出: 0
以 [ 26 ,30] 为例。
首先,将 [ 26 , 30 ] 的范围数字用二进制表示出来:
11010 11011 11100 11101 11110
而输出 24 的二进制是 11000 。
可以发现,只要找到二进制的 左边公共部分 即可。
所以,可以先建立一个 32 位都是 1 的 mask,然后每次向左移一位,比较 m 和 n 是否相同,不同再继续左移一位,直至相同,然后把 m 和 mask 相与就是最终结果。
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
unsigned int d = INT_MAX;
while ((m & d) != (n & d)) {
d <<= 1;
}
return m & d;
}
};
Recommend
-
101
深入理解按位操作符 2019-03-15 按位操作符(Bitwise operators) 的计算主要用在二...
-
27
在数字逻辑中,逻辑算符异或( exclusive or )是对两个运算元的一种逻辑分析类型,符号为 XOR 或 ⊕(编程语言中常用 ^ )。但与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另...
-
26
前言 JavaScript 提供了多种按位操作符,由于不是很了解,我使用频率很低。不过经常看到别人的代码中利用按位操作符简化代码,在一些场景下能够更有效率。本文记录学习按...
-
11
【Java】按位存储:使用int存储boolean数组 有一种场景,比如App设置页中会有一组开关选项,这个时候保存这些开关的状态,如果每个按钮都对应一个boolean值的话,太大材小用显得鸡肋,频繁读...
-
15
背景 最近在园子里看到了这篇文章, 看完这篇会有意外收获:C#枚举高级战术 https://mp.weixin.qq.com/s/yipaL6Acil-uxq_bDDgdyg 想起了很久之前的自己的一篇总结,特地找出来
-
9
您现在的位置:首页 --> 算法 --> 位运算小结(按位与、按位或、按位异或、取反、左移、右移) 位运...
-
5
leetcode 982. 按位与为零的三元组 ...
-
5
1 题目描述image-20220315143903655 2 位运算 O(n×2n)O(n×2n)...
-
12
1.按位与(&)int a = 3, b = -2 , c = a & b ;3&-2结果:2
-
7
【笔记】C语言按位运算符 2022-11-04
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK