A.每日一题——3314.构造最小位运算数组I+3315.构造最小位运算数组II

题目链接:3314. 构造最小位运算数组 I(简单)

3315. 构造最小位运算数组 II(简单)

算法原理:

解法一:暴力枚举

4ms击败30.43%

时间复杂度O(N∗M)

思路很简单,先来一层for循环遍历链表中的每个质数,再针对每个质数再来一层for循环,因为“|”运算的性质就是只要有1,结果就是1,所以 i | (i+1)的结果一定>=i+1,所以内层for循环从0遍历到x-1,逐步试探,只要有符合的,就加入到返回数组ret中,然后立刻break,防止多添,如果没有找到,就把-1加入返回数组即可

解法二:位运算

1ms击败100.00%

时间复杂度O(N)

想要降低时间复杂度就要观察题目的例子,总结出规律再对症下药

举个例子:x=100111时,x | (x+1)=100111 | 101000=101111

x和x+1必然是一奇一偶,那么上述的式子其实就是把二进制最右边的0改成了1,且这个 0右边都是1,在上述例子中0的位置在从左往右数第3个数

反过来,在 x | (x+1)=101111的情况下倒推x,需要把右边四个1的某个1变成0,

满足要求的x有:100111、101011、101101、101110,这些都是符合条件的,挑出其中最小的是 100111,也就是把101111最右边的0的右边的1置为0

那么我们现在的目标就是找到nums[i]最右边的0的右边的1,如何找到呢?

先找到最右边的0,然后>>1就是最右边的1了,如何找到最右边的0呢?

①第一个方向:

既然要找到这个0,那么就是提取出它,在位运算中,提取常常使用按位与&

把101111+1得到110000,再把101111按位取反~得到010000,这两个结果按位与&恰好得到lowbit=10000

②第二个方向:

找到这个0也可以用异或^提取,咱们要找的是最右侧的0,首先明确,找最右侧的1的式子是n&-n,那么我们可以通过对原数取反,将最右侧的1转化为最右侧的0,进而使用这个式子

这个式子可参考下面这篇博客👇

优选算法-位运算:33.判断字符是否唯一

把x=101111按位取反~得到 t=~x=010000,通过 t &-t 得到lowbit=10000

JAVA代码:

class Solution { //解法一:暴力解法 public int[] minBitwiseArray(List<Integer> nums) { int[] ret=new int[nums.size()]; int index=0; //遍历每个质数 for(int x:nums){ //获取一下加入之前的index位置 int tmp=index; for(int i=0;i<x;i++) if((i|(i+1))==x){ ret[index++]=i; break;//找到一个最小的立马弹出 } //如果没找到就添加-1 if(index==tmp) ret[index++]=-1; } return ret; } }
class Solution { //解法二:位运算 public int[] minBitwiseArray(List<Integer> nums) { int[] ret=new int[nums.size()]; int index=0; for(int x:nums){ if(x==2) ret[index++]=-1; else{ //写法一 //int lowbit=(x+1)&~x; //写法二 int lowbit=(~x)&-(~x); ret[index++]=x^(lowbit>>1); } } return ret; } }

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

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

相关文章

2026/1/17~19

2026/1/17~19休息

欧姆龙CP1H + CIF11与欧姆龙E5cc温控器通讯程序分享

欧姆龙CP1HCIF11与欧姆龙E5cc温控器通讯程序 功能&#xff1a;全新原创可直接应用生产程序。 通过昆仑通态触摸屏&#xff0c;串口网关模式&#xff0c;欧姆龙CP1H的CIF11通讯板&#xff0c;实现对欧姆龙E5CC温控器 设定温度值&#xff0c;读取实际温度&#xff0c;设定探头类型…

【DPFSP问题】基于混沌增强领导者黏菌算法CELSMA求解分布式置换流水车间调度DPFSP附Matlab代码

✅作者简介&#xff1a;热爱数据处理、建模、算法设计的Matlab仿真开发者。&#x1f34e;更多Matlab代码及仿真咨询内容点击 &#x1f517;&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知。&#x1f525; 内容介绍一、技术背景与核心目标分布式置换流…

大模型驱动的智能客服Agent系统设计与实现,建议程序员收藏学习

这篇文章详细介绍了企业级客服Agent系统的设计哲学与实现方法。核心是将客服Agent定位为业务执行系统而非聊天机器人&#xff0c;通过风险分层架构、明确"真理来源"、多轮控制环设计等手段&#xff0c;确保系统将不确定的用户输入收敛为确定的业务指令。文章还探讨了…

什么是仓库管理系统 WMS?它到底有什么用?

谢邀。什么是仓库管理系统WMS&#xff1f;它到底有什么用&#xff1f;这个问题&#xff0c;其实在不少企业里都被反复问过。但有意思的是—— 你真的去问一位仓管&#xff0c;答案往往是&#xff1a;“你们仓库有没有WMS&#xff1f;”“有啊&#xff0c;有 Excel。”这其实是很…

FPGA实现万兆网络协议栈UDP/TCP/IP连续16小时无丢包传输

fpga万兆网 udp tcp ip协议栈&#xff0c;16个小时无丢包 凌晨三点盯着示波器屏幕&#xff0c;我掐了一把大腿确认自己没眼花——连续跑了16小时的万兆网数据流&#xff0c;计数器上的收发包数量严丝合缝地对上了。这个在Xilinx UltraScale FPGA上折腾了三个月的协议栈&#x…

提示系统容器编排管理:提示工程架构师的最优策略

系统容器编排管理&#xff1a;提示工程架构师的最优策略 引言&#xff1a;为什么提示工程需要「容器编排思维」&#xff1f; 作为一名提示工程架构师&#xff0c;你是否遇到过这些痛点&#xff1f; 环境混乱&#xff1a;本地调试好的提示流程&#xff0c;部署到测试环境就报错—…

优化提示内容交互设计的9个实用技巧

优化提示内容交互设计的9个实用技巧&#xff1a;让AI更懂你的“说话之道” 一、引入与连接&#xff1a;为什么你需要学“提示设计”&#xff1f; 清晨&#xff0c;你打开ChatGPT&#xff0c;输入&#xff1a;“帮我写篇关于秋天的文章。”半小时后&#xff0c;你看着屏幕上那篇…

三菱fx3u模拟量FB:打开模拟量控制新世界

三菱fx3u模拟量FB 输入输出功能块程序 不是只有西门子才有模拟量库&#xff0c;三菱也可以有&#xff0c;最新的三菱模拟量FB来了。 所需硬件:3u一台&#xff0c;fx2n-2AD和fx2n-2DA或者4AD,4DA都可以。 功能实现:如视频所示&#xff0c;通过模拟量FB&#xff0c;实现变频器频…

Winform UI界面开发:多文档选项卡关闭与丰富提示框实现

winform ui界面 c#界面 支持多文档选项卡关闭&#xff0c;4种类型提示框&#xff08;提示&#xff0c;询问&#xff0c;警告&#xff0c;错误&#xff09;源代码在Winform开发中&#xff0c;打造一个用户体验良好的UI界面是至关重要的。今天咱们就来聊聊如何实现支持多文档选…

BigFoot NPP 在北美和南美地区的表面,2000-2004 年

BigFoot NPP Surfaces for North and South American Sites, 2000-2004 简介 BigFoot 项目于 2000 年至 2004 年间收集了位于阿拉斯加至巴西的九个 EOS 陆地验证站点的净初级生产力&#xff08;NPP&#xff09;数据。每个站点代表一到两种不同的生物群落&#xff0c;包括北极…

从战略制定到卓越执行—华为BLM/DSTE战略规划理念和实践

01 课程简介缺乏这三个战略管理机制&#xff0c;再好的战略机会你也不可能抓住&#xff01;舍本逐末&#xff1a;公司级战略目标普遍缺乏来自市场/客户一线的机会点洞察&#xff0c;最终用个别管理者决策取代了应用的市场决策机制&#xff1b;因小失大&#xff1a;战略目标没有…

告别半夜被Call:用MCP打造你的专属“AI运维指挥官”与自动修复专家

告别半夜被Call&#xff1a;用MCP打造你的专属“AI运维指挥官”与自动修复专家&#x1f6d1; 告别半夜被Call&#xff1a;用MCP打造你的专属“AI运维指挥官”与自动修复专家&#x1f4dd; 摘要 (Abstract)&#x1f6a8; 第一章&#xff1a;从ClickOps到AgentOps——运维范式的降…

揭秘 AI 写作黑科技:从提示词玄学到构建全自动深度内容生成 Agent 的实战指南

&#x1f680; 揭秘 AI 写作黑科技&#xff1a;从提示词玄学到构建全自动深度内容生成 Agent 的实战指南&#x1f680; 揭秘 AI 写作黑科技&#xff1a;从提示词玄学到构建全自动深度内容生成 Agent 的实战指南第一章&#xff1a; &#x1f50d; 祛魅与重构&#xff1a;重新理解…

Python:wxauto或PyOfficeRobot的使用

一、简单说明 这两个包都是用于微信自动发送消息及文件的 并且&#xff0c;PyOfficeRobot的功能实现是基于wxauto的。 现在&#xff0c;wxauto已经停止更新。 wxauto源码地址&#xff1a; 是github地址&#xff0c;有些人的网络可能不支持。 https://github.com/cluic/wxaut…

MedPlan:基于两阶段RAG的个性化医疗AI系统实战案例

MedPlan是基于两阶段RAG的个性化医疗方案生成系统&#xff0c;采用SOAP临床推理流程&#xff1a;第一阶段基于患者主观(S)和客观(O)信息生成评估(A)&#xff0c;第二阶段基于评估和原始信息生成方案。系统整合患者历史记录和相似病例参考&#xff0c;通过两步检索机制提升准确性…

C#上位机与台达DVP系列Modbus 485通信实战

C#上位机&#xff0c;台达DVP系列modbus485通信例子。 例子简单易看懂。 自己写的程序。在自动化控制领域&#xff0c;上位机与下位机的通信至关重要。今天就来分享一个用C#编写的上位机与台达DVP系列通过Modbus 485进行通信的例子&#xff0c;希望能帮助到正在研究相关内容的小…

HTML教学系统设计4:打造三角色协作的自主学习系统,小白也能上手

本文介绍了HTML教学系统中学生自主学习场景的设计&#xff0c;提出老师、学生和AI三角色协作理念&#xff1a;老师作为学习路径设计师&#xff0c;学生作为节奏掌控者&#xff0c;AI作为学习伙伴。文章详细说明了如何提炼本质问题、拆分学习任务、设计AI协作提示和"费曼讲…

从提示词工程到智能体协同:深度解码 AI 写作的技术底层、进阶实践与未来内容生产力的重塑之路

从提示词工程到智能体协同&#xff1a;深度解码 AI 写作的技术底层、进阶实践与未来内容生产力的重塑之路 摘要 本文旨在探讨生成式人工智能&#xff08;AIGC&#xff09;在写作领域的深度应用&#xff0c;从底层技术的概率拟合逻辑出发&#xff0c;剖析 AI 写作如何实现从“简…

Python:wxauto无法安装的问题解决

一、问题描述 我们在实现自动化发送微信消息的功能&#xff0c;需要wxauto工具包。 但是&#xff0c;现在直接pip install wxauto无法下载。 二、解决办法 直接上github下载源码使用。 https://github.com/cluic/wxauto/tree/main# 三、使用教程 下载源码后&#xff0c;直…