LeetCode 面试经典150题 201.数字范围按位与

题目 :给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。

提示:0 <= left <= right <= 2^31 - 1

思路:

位与的特性 :只要参与位与的元素有一个为 0,那么位与结果就为 0。换句话说,如果参与位与的元素都相同,位与结果就是这个相同元素。

代码:

java 复制代码
class Solution {
    public int rangeBitwiseAnd(int left, int right) {
        int count = 0;  // 记录右移次数
        while (left != right) {
            count++;
            left >>= 1;
            right >>= 1;
        }
        return left <<= count;  // 左移
    }
}

性能:

相关推荐
文丑颜不良啊2 小时前
LeetCode2221~2240题目解析
java·leetcode
Navigator_Z3 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
wo_jack3 小时前
C++ 入门笔记(十六):第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效
c++·后端·面试·stl·vector
D e re k ZH3 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶4 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
文丑颜不良啊4 小时前
LeetCode2161~2180题目解析
java·leetcode
雪落漂泊5 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
聪明的笨猪猪5 小时前
AI应用架构选型:架构师的核心决策困境与权衡
经验分享·面试·架构
文丑颜不良啊6 小时前
LeetCode2141~2160题目解析
java·leetcode