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

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

提示: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;  // 左移
    }
}

性能

相关推荐
UrbanJazzerati2 分钟前
当网页翻页时,页码藏在哪里?——一次对分页机制的解密之旅
后端·面试
xlp666hub8 分钟前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
着迷不白1 小时前
Linux单用户模式密码修改与硬盘注释指南
面试
有意义2 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
xlp666hub3 小时前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
用户726876103374 小时前
解放双手的健身助手:基于 Rokid AR 眼镜的运动计时应用
算法
Wect4 小时前
LeetCode 17. 电话号码的字母组合:回溯算法入门实战
前端·算法·typescript
我叫黑大帅4 小时前
Go 语言中处理「未知类型数据」的两大核心手段
后端·面试·go
拉不动的猪5 小时前
重温Vue异步更新队列
前端·javascript·面试
xlp666hub20 小时前
Leetcode第一题:用C++解决两数之和问题
c++·leetcode