当前位置: 首页 > news >正文

力扣面试150题--数字范围按位与

Day 93

题目描述

在这里插入图片描述

思路

初次思路:由于与运算只要出现0结果就是0了,于是我就想按位判断,从小到大依次判断出现0就将该位结果设置为0(超时了)

class Solution {public int rangeBitwiseAnd(int left, int right) {int res=0;int tes=1;int max=right;int sum=0;while(max!=0){//确定判断的最高位是多少max=max>>1;sum++;}for(int i=sum;i>=0;i--){tes=1;for(int j=left;j<=right;j++){if((j>>i)%2==0){//取位tes=0;break;}}res=(res<<1)+tes;}return res;}
}

进阶思路:我们转变思路,将一个数组按位与求的是什么,求得是公共前缀(二进制的高位),如果不一样就是0,于是有如下做法:

class Solution {public int rangeBitwiseAnd(int left, int right) {int shift = 0;// 找到left和right的公共前缀while (left < right) {left >>= 1;right >>= 1;shift++;}// 左移shift位,补回0return left << shift;}
}
http://www.dtcms.com/a/310684.html

相关文章:

  • 【文章素材】ACID 原子性与数据库
  • 五自由度机械臂阻抗控制下的力跟踪
  • 神经网络学习笔记
  • 台式机 Server 20.04 CUDA11.8
  • JAVA,Filter和Interceptor
  • ThreadLocal总结
  • 基于倍增的LCA + kruskal重构树 + 并查集
  • 可编辑234页PPT | 某制造集团供应链流程分析和数字化转型解决方案
  • JavaScript 语句和函数
  • ensp防火墙安全策略实验
  • 【全网首个公开VMware vCenter 靶场环境】 Vulntarget-o 正式上线
  • Linux权限提升
  • shell编程练习,实现循环创建账户、测试主机连通性、批量修改主机root密码等功能
  • Linux 用户与组管理:从配置文件到实操命令全解析
  • Lecture 7: Processes 4, Further Scheduling
  • 嵌入式系统中常用通信协议
  • 高压大电流与低压大电流电源的设计难点
  • QT中重写事件过滤失效(返回了多个事件)
  • Jetpack Compose Column组件之focusProperties修饰符
  • 基于C#和NModbus4库实现的Modbus RTU串口通信
  • 【工具分享】模拟接口请求响应的Chrome插件ModResponse
  • 光伏运维数据透明化,发电量提高45%
  • Cursor免费使用工具
  • 配置多数据源dynamic-datasource 开箱即用方案​
  • ubuntu使用man手册中文版办法
  • 同品牌的系列广告要如何保证宣传的连贯性?
  • C语言(02)——标准库函数大全(持续更新)
  • 精品可编辑PPT | 集团整体架构与商务智能解决方案
  • Klipper-配置解析
  • 「一键召唤 007」:开源多智能体 JoyAgent-JDGenie 如何让你的 AI 产品从 Demo 到 真香 只差 Ctrl+C / Ctrl+V?