news 2026/5/8 12:35:15

leetcode 3314(位运算,lowbit)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 6:53:35

线程池调度下的CPU治理

一、业务背景 在xx系统中&#xff0c;xx标签匹配模块是支撑多个下游业务的关键数据源。该模块每小时需要定时对 20万 x 1000条MVEL规则进行处理&#xff0c;涵盖&#xff1a; 标签匹配条件判断动态标签集合处理 任务采用 线程池并发处理 &#xff0c;最大并发线程数为 60 。随…

作者头像 李华
网站建设 2026/5/8 12:35:12

一文说清电路仿真软件三大核心仿真类型

电路仿真的三大基石&#xff1a;直流、交流与瞬态仿真全解析在电子设计的世界里&#xff0c;“先仿真&#xff0c;再搭板”已成为工程师的共识。面对日益复杂的模拟电路、混合信号系统乃至电源拓扑&#xff0c;盲目上电不仅效率低下&#xff0c;还可能烧毁昂贵的元器件。而真正…

作者头像 李华
网站建设 2026/4/18 13:37:08

multisim仿真电路图验证RC滤波器响应的详细步骤

用Multisim手把手验证RC滤波器频率响应&#xff1a;从原理到仿真的完整实践你有没有遇到过这种情况&#xff1f;理论算得清清楚楚&#xff0c;截止频率 $ f_c \frac{1}{2\pi RC} $ 背得滚瓜烂熟&#xff0c;结果一搭电路&#xff0c;示波器上看出来的-3dB点却“偏了十万八千里…

作者头像 李华
网站建设 2026/5/8 1:21:54

HTTP参数污染(HPP)基础

第一部分&#xff1a;开篇明义 —— 定义、价值与目标 定位与价值 HTTP参数污染&#xff0c;即HTTP Parameter Pollution&#xff0c;是一种利用Web应用程序对HTTP请求中多个同名参数的处理不一致性&#xff0c;来达成绕过验证、篡改逻辑或实施攻击的漏洞。在Web安全测试的广谱…

作者头像 李华
网站建设 2026/5/5 23:17:09

词根词缀拆解|dict- = 说/断言!用兜兜英语快速记牢高频词

喽英语学习者们&#x1f44b;&#xff01;今天用「兜兜英语词根词缀拆解工具」带大家吃透一个超实用前缀——dict-&#xff0c;它的核心含义是「说、断言」&#xff0c;衍生出的单词遍布阅读、写作、口语场景&#xff0c;掌握它能批量解锁高频词&#xff0c;记忆效率直接翻倍✨…

作者头像 李华