leetcode 201 数字范围按位与

leetcode 201

题目

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

在这里插入图片描述

题解

本题是一个在思维上的方法,不涉及数据结构和具体的算法。
首先如果是暴力解法遍历区间内的所有数字是超过时间限制的。

首先有两个规则:
(1)假设区间中有w个数字,那么n个数字在第k位只要有一个数字不是1那么按位&的结果一定是0
(2)在区间left到right中,因为是连续的整数,所以一定在left和right的后面的n位上均存在0,根据(1)可知后面的n位按位&的结果都是0.
综上我们只需要找到n到底是几,以及left和right的公共前缀就可以了。现在就可以看代码部分了,其中shift表示的就是n。

代码

class Solution {
   
public:
    int rangeBitwiseAnd(int left, int right) {
   
        int shift = 0;
        while(left!=right){
   
            left = left >> 1;
            right = right >> 1;
            shift+= 1;
        }
        return left << shift;
    }
};

相关推荐

  1. 力扣:201. 数字范围(Python3)

    2023-12-09 21:38:02       68 阅读
  2. 力扣201. 数字范围

    2023-12-09 21:38:02       54 阅读
  3. 例题

    2023-12-09 21:38:02       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 21:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 21:38:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 21:38:02       82 阅读
  4. Python语言-面向对象

    2023-12-09 21:38:02       91 阅读

热门阅读

  1. K-Means 算法详解

    2023-12-09 21:38:02       51 阅读
  2. linux 编译安装libzmq

    2023-12-09 21:38:02       53 阅读
  3. springboot基础(81):设置redis序列化器

    2023-12-09 21:38:02       58 阅读
  4. 写在FastAPI之旅之前

    2023-12-09 21:38:02       55 阅读
  5. ELK的日志解决方案

    2023-12-09 21:38:02       55 阅读
  6. 六部十层电梯论文

    2023-12-09 21:38:02       53 阅读
  7. Flink 系列文章汇总索引

    2023-12-09 21:38:02       45 阅读
  8. 有关Nginx docker容器版部署访问403的解决

    2023-12-09 21:38:02       57 阅读
  9. 卷积之后通道数为什么变了

    2023-12-09 21:38:02       47 阅读
  10. Docker实战笔记 一 Nginx镜像

    2023-12-09 21:38:02       52 阅读