【技巧】Leetcode 201. 数字范围按位与【中等】

数字范围按位与

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

示例 1:

输入:left = 5, right = 7
输出:4

解题思路

在一个范围内进行按位与操作时,如果这个范围跨越了多个2的幂次方区间,那么最终的结果中,这些幂次方位上的所有位都将变为0。例如:

对于范围 [5, 7],按位与的结果是 4,因为:
5 的二进制表示是 101
6 的二进制表示是 110
7 的二进制表示是 111
5 & 6 & 7 = 100 (即 只有相同前缀的数字保留了,其他位都是0)

可以通过不断右移操作,找到左端点和右端点的共同前缀(非共同前缀&的结果一定是0),记录右移的次数,最后将共同前缀左移回原来的位置。

**例如:**n 和 m 的二进制及最长前缀如下图所示,后缀 011 累加到 110 必然经过 100。011 和 100 保证了答案中长度为 3 的后缀必然均为 0。
在这里插入图片描述

java实现

public class RangeBitwiseAnd {public int rangeBitwiseAnd(int left, int right) {int shift = 0;// 找到 left 和 right 的共同前缀while (left < right) {left >>= 1;right >>= 1;shift++;}// 将共同前缀左移回去return left << shift;}// 测试用例public static void main(String[] args) {RangeBitwiseAnd solution = new RangeBitwiseAnd();System.out.println(solution.rangeBitwiseAnd(5, 7)); // 期望输出: 4System.out.println(solution.rangeBitwiseAnd(0, 1)); // 期望输出: 0System.out.println(solution.rangeBitwiseAnd(1, 2147483647)); // 期望输出: 0}
}

时间空间复杂度

  • 时间复杂度:O(log n),其中 n 是范围内的最大值。因为在逐步右移,直到 left 等于 right,最多需要进行 log n 次右移操作。

  • 空间复杂度:O(1),只使用了常数级别的额外空间。

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

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

相关文章

【面试实战】# 并发编程

1.线程状态 请解释 Java 中线程的几种状态&#xff0c;并描述每种状态的特点和转换条件。 NEW&#xff08;新建&#xff09;&#xff1a;线程被创建&#xff0c;但尚未启动。RUNNABLE&#xff08;可运行&#xff09;&#xff1a;线程正在运行&#xff0c;可能在执行代码&#x…

Maria/Mysql部署时远程连不上主机

‘主机’ is not allowed to connect to this MariaDB . 原因是设置为仅本机登录。 以root用户登录 -- 使用mysql库 use mysql; -- 查看可以登录的用户 select host,user,password from user; -- 修改root可以在任意主机登录(注意user) update user set host % where user r…

看门狗 WDG

嵌入式软件中的看门狗&#xff08;Watchdog Timer, WDT&#xff09;是一种监控机制&#xff0c;用于确保系统在出现故障时能够自动恢复正常运行。它通常由硬件定时器和相应的软件组成&#xff0c;当系统中的软件没有在预定时间内喂狗&#xff08;即重置定时器&#xff09;时&am…

Ansible Automation Platform(RHAAP2)架构中的四种节点及配置

在清单文件inventory中配置 #自动化控制节点设置 [automationcontroller] example.com #默认为混合节点 control.example node_typecontrol #作为控制节点&#xff0c;仅负责自动化的平台运行 hybrid.example node_typehybrid #作为混合节点&#xff0c;即是自动化平台又是任…

手机号码的校验

手机号码的校验 手机号码的校验应用的场景还是很多的&#xff0c;也随处可见&#xff0c;下面就记录几个校验方法 const emptyTip 请输入; // 必选项为空 const patternTip 请输入正确的; // 格式错误 // 联系电话校验&#xff08;固话手机&#xff09; /(^0\d{2,3}-?\d{7,8…

服务器数据恢复—KVM虚拟机被误删除如何恢复虚拟磁盘文件?

服务器数据恢复环境&故障&#xff1a; 1台服务器&#xff0c;Linux操作系统EXT4文件系统&#xff0c;部署了数台KVM虚拟机&#xff0c;每台虚拟机包含一个qcow2格式的磁盘文件&#xff0c;和一个raw格式的磁盘文件。 工作人员操作失误删除了3台服务器上的KVM虚拟机&#xf…

一站式的ITO服务,涵盖了业务流程外包(BPO)、IDC驻场运维以及IDC工程实施等三大类别

在信息技术日新月异的今天&#xff0c;企业对于信息技术服务外包&#xff08;ITO服务&#xff09;的需求日益增加。联通作为领先的通信服务提供商&#xff0c;凭借其在信息技术领域的深厚积累&#xff0c;为客户提供了一站式的ITO服务&#xff0c;涵盖了业务流程外包&#xff0…

13.4 内存管理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【课程系列04】某客时间AI大模型应用开发实战营

网盘链接 https://pan.baidu.com/s/1blR1eIMDIIp6AbxU4YaK9w 课程收获 "AI大模型应用开发实战营"是一个为期八周的在线课程&#xff0c;旨在教授学员如何开发和应用AI大模型。课程内容从基础理论到实际应用&#xff0c;逐步深入&#xff0c;覆盖了以下要点&#x…

python发邮件给多人的注意事项?如何群发?

python发邮件给多人的效率如何&#xff1f;python发邮件的方法&#xff1f; 在利用Python编程语言实现邮件群发功能时&#xff0c;需要注意许多细节&#xff0c;以确保邮件能有效送达且用户体验良好。AokSend将详细探讨python发邮件给多人时需要注意的各个方面&#xff0c;以帮…

Python邮件加密传输如何实现?有哪些技巧?

Python邮件怎么设置服务器&#xff1f;如何使用Python发送邮件&#xff1f; 为了确保邮件内容在传输过程中不被窃听或篡改&#xff0c;使用加密传输是必不可少的。在使用Python邮件传输时&#xff0c;加密传输是保障信息安全的关键手段。AokSend将详细探讨Python邮件加密传输的…

【C++提高编程-10】----C++ STL常用拷贝和替换算法

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

【Python】类和对象的深入解析

目录 前言 什么是类&#xff1f; 定义一个类 创建对象 访问和修改属性 方法 类的继承 多态 封装 特殊方法 属性装饰器 总结 前言 Python 是一种面向对象的编程语言&#xff0c;它允许程序员通过类和对象来组织和管理代码。面向对象编程&#xff08;OOP&#xff09…

高通平台添加设备驱动流程

高通平台添加驱动如下&#xff1a; ----------- kernel/msm-3.18/arch/arm/boot/dts/qcom/msm-pmi8950.dtsi ----------- index a714654..d6c2c57 100644 -192,7 192,13 mppa300 { reg <0xa300 0x100>; qcom,pin-nu…

力扣每日一题(2024-6-18)2288. 价格减免

本文章是对官方题解的补充说明 原题链接&#xff1a;2288. 价格减免 思路 由题目中的“单词之间用单个空格分隔”和 “如果单词的形式为美元符号后跟着一个非负实数&#xff0c;那么这个单词就表示一个 价格 。” 可知&#xff1a; 首先要通过 ‘space’把原字符串进行切分&…

PHP 标准建议psr

PSR-1: Basic Coding Standard&#xff08;基础编码标准&#xff09; PSR-1 定义了PHP代码文件的基本编写规范&#xff0c;它关注的是代码文件的结构和一些通用的编程约定&#xff0c;主要包括&#xff1a; 文件命名&#xff1a;PHP文件必须以.php为后缀。PHP标签&#xff1a…

智慧校园的构建要素是什么

在当今数字时代&#xff0c;智慧校园的构建已成为教育界的热门话题。随着技术的不断进步&#xff0c;学校不再只是传统的教学场所&#xff0c;而是一个充满智能化和创新的环境。那么&#xff0c;智慧校园的构建要素究竟是什么呢&#xff1f; 基础设施建设 高速、稳定的网络覆…

Vue的computed大致细节

computed computed具体实现流程computer的执行顺序 computed 具体实现流程 computer内部首先是标准化参数然后调用runner函数进行依赖收集设置dirty为true创建副作用函数&#xff0c;具体如下 const runner effect(getter,{//延迟执行lazy:true,//标记为computed effect 用…

pygame游戏开发

Pygame游戏开发 pygame简介 模块库请参考&#xff1a;pygame官方文档 pygame可以用作游戏开发&#xff0c;但在商业游戏中真正的开发工具却不是pygame。使用pygame开发游戏周期长。 安装pygame 在pycharm中安装第三方库pygame&#xff1a; 在计算机中安装pygame&#xf…

ElasticSearch学习篇13_《检索技术核心20讲》进阶篇之LSM树

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243&#xff0c;文档形式记录笔记。 内容 磁盘和内存数据读取特点 工业界中数据量往往很庞大&#xff0c;比如数据无法全部加载进内存&#xff0c;无法支持索引的高效实时更新&…