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

leetcode 3314(位运算,lowbit)

3314: 构造最小位运算数组Ⅰ

思路1:枚举

class Solution { public: vector<int> minBitwiseArray(vector<int>& nums) { vector<int> ans(nums.size(),-1); for(int i=0;i<nums.size();i++){ int x=nums[i]; for(int j=1;j<x;j++){ int y=j|(j+1); if(y==x){ ans[i]=j; break; } } } return ans; } };

思路2:位运算,lowbit

特别地,只包含最小元素的子集,即二进制最低1及其后面的 0,也叫 lowbit,可以用s&-s算出。

正数:原码 = 反码 = 补码

s = 101100 ~s = 010011 //按位取反(反码) (~s)+1 = 010100 //补码=反码+1(负数,符号位为1) s & -s = 000100 //lowbit

例如 x=100111,那么 x ∣ (x+1)=100111 ∣ 101000=101111。

可以发现,x ∣ (x+1) 的本质是把二进制最右边的 0 置为 1。

反过来,如果已知 x ∣ (x+1)=101111,那么倒推 x,需要把 101111 中的某个 1 变成 0。满足要求的 x 有:100111 101011 101101 101110
其中最小的是 100111,也就是把 101111 最右边的 0 的右边的 1 置为 0。

无解的情况:由于 x ∣ (x+1) 最低位一定是 1(因为 x 和 x+1 中必有一奇数),所以如果 nums[i] 是偶数(质数中只有 2),那么无解。

对本题:把101111取反(~x),得 010000,其 lowbit=10000 (t&-t),右移一位得 1000。把 101111 与 1000 异或,即可得到 100111。

class Solution { public: vector<int> minBitwiseArray(vector<int>& nums) { vector<int> ans(nums.size(),-1); for(int i=0;i<nums.size();i++){ int x=nums[i]; if(x==2) continue; int t=~x,s=(t&-t)>>1; //右移一位 ans[i]=x^s; //按位异或 } return ans; } };
http://www.jsqmd.com/news/275603/

相关文章:

  • risc-v五级流水线cpu用于PLC系统的完整指南
  • LED显示屏尺寸大小测量错误导致控制卡异常?一文说清
  • 聚焦组织效能:互联网高速增长期 HR 系统的核心选择标准
  • GEO战略新纪元:2026年,执行之外更需顶层咨询 从算法执行到战略规划——AI搜索时代的企业生存法则
  • 高考模拟阅读理解题目:《民族》
  • 新手前端别慌:3天搞懂CSS写在哪,页面立马不丑了(附避坑指南)
  • Xilinx FPGA中USB3.0物理层接口调试核心要点
  • 图解PCB布线规则设计入门:多层板层间分布逻辑
  • 三极管开关电路与逻辑电平匹配仿真设计实践指南
  • Nature Sensors:国内首篇,仿生触觉新突破!清华团队研发“鸽眼”传感器,让机器人感知逼近人类!
  • 硬件I2C电气特性详解:上拉电阻与驱动能力
  • 基于广义benders分解法的综合能源系统优化规划(Matlab代码实现)
  • 线程池调度下的CPU治理
  • 使用Vitis构建低延迟控制环路:操作指南
  • HID协议项目应用:简易游戏手柄开发教程
  • 大数据领域数据科学:助力企业数字化营销的策略
  • [特殊字符]_可扩展性架构设计:从单体到微服务的性能演进[20260120163651]
  • OpenAMP在边缘控制器中的实践:新手入门必看
  • 单片机毕业设计最全开题分享
  • 含分布式电源的配电网日前两阶段优化调度模型(Matlab代码实现)
  • 优思学院|做质量的人为什么总在“得罪人”?
  • 大数据领域OLAP助力企业决策的实战经验
  • HTTP参数污染(HPP)基础
  • 基于PI+重复控制的有源滤波器谐波抑制策略模型(Simulink仿真实现)
  • 手把手教程:使用LTspice搭建基本模拟电路模型
  • 无源蜂鸣器双极性驱动电路结构解析
  • 一文说清电路仿真软件三大核心仿真类型
  • 模拟电路输入输出阻抗匹配:操作指南
  • 计算机毕业设计springboot基于BS的学生信息管理系统 基于SpringBoot与Vue的B/S架构学生综合信息管理平台 SpringBoot+MySQL实现的浏览器端学生学籍与成绩一体化系统
  • multisim仿真电路图验证RC滤波器响应的详细步骤