给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。
示例 1:
输入:left = 5, right = 7 输出:4
示例 2:
输入:left = 0, right = 0 输出:0
示例 3:
输入:left = 1, right = 2147483647 输出:0
c++解法
- class Solution {
- public:
- int rangeBitwiseAnd(int left, int right) {
- int shift=0;
- while(left
- left=left>>1;
- right=right>>1;
- shift++;
- }
- return left<
- }
- };
分析:
本题要求两个整数之间所有数字按位与的结果,即按照题返回两个整数二进制字符之间的公共前缀,利用双指针两边向中间靠近求出即可
总结:
本题考察对按位与的思考,原求两个数字之间所有数按位与的结果可转换未求二进制字符间公共前缀,利用双指针的方法解决
-
相关阅读:
table.drawData函数重写,如何在新的重写函数中调用被重写前的默认实现
安装vue时候发现npm淘宝镜像不能使用,报出:npm.taobao.org和registry.npm.taobao.or
车间调度动态知多少
【Linux常用命令】
计算机视觉与深度学习实战,Python为工具,小波变换的数字水印技术
GraphSAGE 源代码 -- 分图训练
自动批量网站图片收集软件
vue-lazyload图片懒加载
localStorage 和 sessionStorage 异同
YOLOV7改进-具有隐式知识学习的Efficient解耦头
-
原文地址:https://blog.csdn.net/si_mple_/article/details/134022811