算法-位运算-数字范围按位与

news2025/2/22 15:54:21

算法-位运算-数字范围按位与

1 题目概述

1.1 题目出处

https://leetcode.cn/problems/bitwise-and-of-numbers-range/description/?envType=study-plan-v2&envId=top-interview-150

1.2 题目描述

在这里插入图片描述

2 逐个按位与运算

2.1 思路

最简单的就是直接挨个做与运算,但要注意result = 0、循环到 Integer.MAX_VALUE时的特殊处理。

2.2 代码

class Solution {
    public int rangeBitwiseAnd(int m, int n) {
        if(m == Integer.MAX_VALUE){
            return m;
        }
        int result = m;
        for (int i = m + 1; i <= n; i++) {
            result &= i;
            // result=0时,提前退出,因为0和任何数按位与都是0
            // i = Integer.MAX_VALUE时,也需要退出,否则i++后会因为补码的原因直接变为-2147483648了,会死循环
            if(result == 0 ||  i == Integer.MAX_VALUE){
                break;
            }
        }
        return result;
    }
}

2.3 时间复杂度

O(n)

2.4 空间复杂度

O(1)

3 公共前缀法

3.1 思路

所有数字从左往右开始找公共前缀,直到第一个不为一致的位,在这之后的都置为0,保留左边的公共前缀。

比如 [4,7],100 & 101 & 110 & 111,公共前缀为1,则结果为100 即4.

这里不会出现如 101XXX & 111YYY = 101000这样的情况,因为我们题意指定数字是每次等差为1递增的,101XXX 递增到 111YYY 之间,肯定有 110DDD这样的数字,导致和 101XXX和111YYY的第三位1一起相与结果为0。所以只需要考虑最左公共前缀即可。

  1. 找公共前缀的方法,就是把m和n一起往右按位移动,并记录下移动次数moveCount,直到m==n为止。
  2. 将m往左按位移动moveCount次,得到的结果就是最终结果了

3.2 代码

class Solution {
    public int rangeBitwiseAnd(int m, int n) {
        if (m == n) {
            return m;
        }
        if (m == 0) {
            return 0;
        }
        if ((m & n) == 0) {
            return 0;
        }

        int moveCount = 0;
        while (m != n) {
            m >>= 1;
            n >>= 1;
            moveCount++;
        }
        return m << moveCount;
    }
}

3.3 时间复杂度

O(logn)

3.4 空间复杂度

O(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云智能化组装式交付方案 ——金融级PaaS业务洞察及Web3实践的卓越贡献

伴随信息技术与金融业务加速的融合&#xff0c;企业应用服务平台&#xff08;PaaS&#xff09;已从幕后走向台前&#xff0c;成为推动行业数字化转型的关键力量。此背景下&#xff0c;华为云PaaS智能化组装式交付方案闪耀全场&#xff0c;在近日结束的华为全联接大会 2023上倍受…

DTDX991A 61430001-UW 自由IOT引入人工智能功能

DTDX991A 61430001-UW 自由IOT引入人工智能功能 人工智能功能可以在不利的机器和过程条件发生灾难性后果之前通知用户和其他系统。 这个被广泛采用的软件平台的最新版本还包括一个强大的自助视频库。这使用户能够在闲暇时浏览所有的特性和功能&#xff0c;同时促进整个工厂用…

redis系列之——高可用(主从、哨兵)

redis系列之——高可用&#xff08;主从、哨兵、集群&#xff09; 所谓的高可用&#xff0c;也叫HA&#xff08;High Availability&#xff09;&#xff0c;是分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计减少系统不能提供服务的时间。…

【RV1103】RTL8723bs (SD卡形状模块)驱动开发

文章目录 前言硬件分析Luckfox Pico的SD卡接口硬件原理图LicheePi zero WiFiBT模块总结 正文Kernel WiFi驱动支持Kernel 设备树支持修改一&#xff1a;修改二&#xff1a; SDK全局配置支持 wifi全局编译脚本支持编译逻辑拷贝rtl8723bs的固件到文件系统的固定目录里面去 上电后手…

网络安全人才发展史

1958年&#xff0c;我国第一台电子数字计算机诞生 1994年&#xff0c;互联网正式进入中国 网络安全工程师从此诞生 在6到14岁的懵懂孩童阶段&#xff0c;他们开始逐渐了解这个世界&#xff0c;接触网络生活。他们对于未知的世界充满了好奇但又对诸多危险因素没有正确判断能力。…

Java8实战-总结36

Java8实战-总结36 重构、测试和调试调试查看栈跟踪使用日志调试 小结 重构、测试和调试 调试 调试有问题的代码时&#xff0c;程序员的兵器库里有两大老式武器&#xff0c;分别是&#xff1a; 查看栈跟踪输出日志 查看栈跟踪 程序突然停止运行&#xff08;比如突然抛出一个…

Win10 cmd如何试用tar命令压缩和解压文件夹

环境&#xff1a; Win10 专业版 Microsoft Windows [版本 10.0.19041.208] 问题描述&#xff1a; Win10 cmd如何试用tar命令压缩和解压文件夹 C:\Users\Administrator>tar --help tar(bsdtar): manipulate archive files First option must be a mode specifier:-c Cre…

ElementUI之首页导航+左侧菜单->mockjs,总线

mockjs总线 1.mockjs 什么是Mock.js 前后端分离开发开发过程当中&#xff0c;经常会遇到以下几个尴尬的场景&#xff1a; - 老大&#xff0c;接口文档还没输出&#xff0c;我的好多活干不下去啊&#xff01; - 后端小哥&#xff0c;接口写好了没&#xff0c;我要测试啊&#x…

知识图谱(6)基于KG构建问答系统

问答系统概述 问答系统是人类从机器中获取数据与知识的主要形式&#xff0c;问答系统包括NLP的多种应用&#xff1a;语义理解&#xff0c;知识图谱&#xff0c;推理&#xff0c;文本生成。问答系统是检验机器智能的一种方式&#xff08;图灵测试&#xff09;。 图灵测试&#…

C++ 继承详解

目录 C 继承介绍 继承中的特点 public 继承 protected 继承 private 继承 在类里面不写是什么类型&#xff0c;默认是 private 的 如果继承时不显示声明是 private&#xff0c;protected&#xff0c;public 继承&#xff0c;则默认是 private 继承&#xff0c;在 struct …

【每日一题】递枕头

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;模拟方法二&#xff1a; O ( 1 ) O(1) O(1) 解法 写在最后 Tag 【模拟】【 O ( 1 ) O(1) O(1) 公式】【2023-09-26】 题目来源 2582. 递枕头 题目解读 编号从 1 到 n 的 n 个人站成一排传递枕头。最初&#xff0c;排…

知识工程---neo4j 5.12.0+GDS2.4.6安装

&#xff08;已安装好neo4j community 5.12.0&#xff09; 一. GDS下载 jar包下载地址&#xff1a;https://neo4j.com/graph-data-science-software/ 下载得到一个zip压缩包&#xff0c;解压后得到jar包。 二. GDS安装及配置 将解压得到的jar包放入neo4j安装目录下的plugi…

thinkphp5 如何模拟在apifox里面 post数据接收

tp5里面控制器写的方法想直接apifox里面请求接受 必须带上这个参数 header里面 X-Requested-With&#xff1a;XMLHttpRequest

ThreeJS-3D教学一:基础场景创建

Three.js 是一个开源的 JS 3D 图形库&#xff0c;用于创建和展示高性能、交互式的 3D 图形场景。它建立在 WebGL 技术之上&#xff0c;并提供了丰富的功能和工具&#xff0c;使开发者可以轻松地构建令人惊叹的 3D 可视化效果。 Three.js 提供了一套完整的工具和 API&#xff0…

DAMO-YOLO训练KITTI数据集

1.KITTI数据集准备 DAMO-YOLO支持COCO格式的数据集&#xff0c;在训练KITTI之前&#xff0c;需要将KITTI的标注转换为KITTI格式。KITTI的采取逐个文件标注的方式确定的&#xff0c;即一张图片对应一个label文件。下面是KITTI 3D目标检测训练集的第一个标注文件&#xff1a;000…

基于springboot的小说阅读网站设计与实现【附源码】

基于以下技术实现&#xff1a;springbootmybatisplusjsoupmysql 媛麻&#xff1a;可代xie lun文,ding制作网站 在这里插入图片描述

图像处理与计算机视觉--第四章-图像滤波与增强-第二部分

目录 1.图像噪声化处理与卷积平滑 2.图像傅里叶快速变换处理 3.图像腐蚀和膨胀处理 4 图像灰度调整处理 5.图像抖动处理算法 学习计算机视觉方向的几条经验: 1.学习计算机视觉一定不能操之过急&#xff0c;不然往往事倍功半&#xff01; 2.静下心来&#xff0c;理解每一个…

前后端分离的计算机毕设之基于springboot+vue的课程设计选题管理系统(内含源码+文档+教程)

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

vue_Delete `␍`eslint(prettier/prettier)

Delete ␍eslint(prettier/prettier) 错误的解决方案 问题背景 在Windows笔记本上新拉完代码&#xff0c;在执行pre-commit时&#xff0c;出现如下错误&#xff1a; Delete ␍eslint(prettier/prettier)问题根源 罪魁祸首是git的一个配置属性&#xff1a;core.autocrlf 由于…

Kafka数据可靠性保证

1.生产者发送数据到Topic partition的可靠性保证 为保证producer发送的数据&#xff0c;能可靠的发送到指定的topic&#xff0c;topic的每个partition收到producer发送的数据后&#xff0c;都需要向producer发送ack&#xff08;acknowledgement确认收到&#xff09;&#xff0c…