给你两个整数 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<
- }
- };
分析:
本题要求两个整数之间所有数字按位与的结果,即按照题返回两个整数二进制字符之间的公共前缀,利用双指针两边向中间靠近求出即可
总结:
本题考察对按位与的思考,原求两个数字之间所有数按位与的结果可转换未求二进制字符间公共前缀,利用双指针的方法解决
-
相关阅读:
【Android】遥控器无法点击AOSP Settings的返回按键
【Redis】数据结构---String
025 - STM32学习笔记 - 液晶屏控制(二) - 代码实现
聊聊大模型的屏蔽词工程
MySQL高级-SQL优化-insert优化-批量插入-手动提交事务-主键顺序插入
leetcode做题笔记146. LRU 缓存
Leo赠书活动-26期 不同数据库背后的数据存储方案
mmdetection 用yolox训练自己的coco数据集
java毕业设计校园商铺mybatis+源码+调试部署+系统+数据库+lw
Spring的IOC原理
-
原文地址:https://blog.csdn.net/si_mple_/article/details/134022811