news 2026/4/23 14:07:45

LeetCode 3314.构造最小位运算数组 I:今日先简单题简单做-到II再优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 3314.构造最小位运算数组 I:今日先简单题简单做-到II再优化

【LetMeFly】3314.构造最小位运算数组 I:今日先简单题简单做-到II再优化

力扣题目链接:https://leetcode.cn/problems/construct-the-minimum-bitwise-array-i/

给你一个长度为n的质数数组nums。你的任务是返回一个长度为n的数组ans,对于每个下标i,以下条件均成立:

  • ans[i] OR (ans[i] + 1) == nums[i]

除此以外,你需要最小化结果数组里每一个ans[i]

如果没法找到符合条件ans[i],那么ans[i] = -1

质数指的是一个大于 1 的自然数,且它只有 1 和自己两个因数。

示例 1:

输入:nums = [2,3,5,7]

输出:[-1,1,4,3]

解释:

  • 对于i = 0,不存在ans[0]满足ans[0] OR (ans[0] + 1) = 2,所以ans[0] = -1
  • 对于i = 1,满足ans[1] OR (ans[1] + 1) = 3的最小ans[1]1,因为1 OR (1 + 1) = 3
  • 对于i = 2,满足ans[2] OR (ans[2] + 1) = 5的最小ans[2]4,因为4 OR (4 + 1) = 5
  • 对于i = 3,满足ans[3] OR (ans[3] + 1) = 7的最小ans[3]3,因为3 OR (3 + 1) = 7

示例 2:

输入:nums = [11,13,31]

输出:[9,12,15]

解释:

  • 对于i = 0,满足ans[0] OR (ans[0] + 1) = 11的最小ans[0]9,因为9 OR (9 + 1) = 11
  • 对于i = 1,满足ans[1] OR (ans[1] + 1) = 13的最小ans[1]12,因为12 OR (12 + 1) = 13
  • 对于i = 2,满足ans[2] OR (ans[2] + 1) = 31的最小ans[2]15,因为15 OR (15 + 1) = 31

提示:

  • 1 <= nums.length <= 100
  • 2 <= nums[i] <= 1000
  • nums[i]是一个质数。

解题方法:模拟

今天就每个数O ( 1 ) O(1)O(1)的话,明天的每日一题就没得做了。

对于一个数n nn,如何求得其对应的最小a n s ansans

使用一个变量从0 00试到n − 1 n-1n1就好了。

每个数都这样试试,也不用优化,今日的每日一题就这样结束了。

  • 时间复杂度O ( l e n ( n u m s ) × max ⁡ ( n u m s ) ) O(len(nums)\times\max(nums))O(len(nums)×max(nums))
  • 空间复杂度O ( 1 ) O(1)O(1),力扣返回值不计入算法空间复杂度

AC代码

C++
/* * @LastEditTime: 2026-01-20 22:52:17 */classSolution{private:intget(intn){for(inti=0;i<=n;i++){if((i|(i+1))==n){returni;}}return-1;}public:vector<int>minBitwiseArray(vector<int>&nums){vector<int>ans(nums.size());for(inti=0;i<nums.size();i++){ans[i]=get(nums[i]);}returnans;}};
Python
''' LastEditTime: 2026-01-20 22:55:49 '''fromtypingimportListclassSolution:defget(self,n:int)->int:foriinrange(n):if(i|(i+1))==n:# 不是(i or (i + 1))returnireturn-1defminBitwiseArray(self,nums:List[int])->List[int]:return[self.get(t)fortinnums]
Java
/* * @LastEditTime: 2026-01-20 23:04:56 */importjava.util.List;classSolution{privateintget(intn){for(inti=0;i<n;i++){if((i|(i+1))==n){returni;}}return-1;}publicint[]minBitwiseArray(List<Integer>nums){int[]ans=newint[nums.size()];// 是size不是lengthfor(inti=0;i<nums.size();i++){ans[i]=get(nums.get(i));}returnans;}}
Go
/* * @LastEditTime: 2026-01-20 22:58:16 */packagemainfuncminBitwiseArray(nums[]int)[]int{get:=func(nint)int{fori:=0;i<n;i++{if(i|(i+1))==n{returni}}return-1}ans:=make([]int,len(nums))fori,n:=rangenums{ans[i]=get(n)}returnans}
Rust
/* * @LastEditTime: 2026-01-20 23:07:14 */implSolution{fnget(n:i32)->i32{foriin0..n{if(i|(i+1))==n{returni;}}-1}pubfnmin_bitwise_array(nums:Vec<i32>)->Vec<i32>{nums.iter().map(|&num|Self::get(num)).collect()}}
Rust - 压缩版(bushi)
/* * @LastEditTime: 2026-01-20 23:09:46 */implSolution{pubfnmin_bitwise_array(nums:Vec<i32>)->Vec<i32>{nums.iter().map(|&n|{foriin0..n{if(i|(i+1))==n{returni;}}-1}).collect()}}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:55:38

好写作AI:在职硕士的“时间刺客”——工作论文我全都要!

白天被KPI追着跑&#xff0c;晚上被论文进度吓得睡不着&#xff1f;作为在职硕士&#xff0c;你是否感觉自己在“职场卷王”和“学术菜鸟”之间反复横跳&#xff1f;别慌&#xff0c;你的“平衡术外挂”——好写作AI已上线&#xff0c;专治各种“没时间”“没精力”“没头绪”&…

作者头像 李华
网站建设 2026/4/23 11:39:12

51单片机简易机械臂摇杆控制舵机系统135(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

51单片机简易机械臂摇杆控制舵机系统135产品功能描述&#xff1a; 本系统由STC89C52单片机核心、A/D芯片PCF8591、舵机控制、遥感采集及电源组成。 1、单片机通过PCF8591实时采集遥感位置转换的电压值大小。 2、单片机根据AD采集的值大小控制舵机指示位置&#xff0c;如向上推遥…

作者头像 李华
网站建设 2026/4/18 16:07:30

学霸同款8个AI论文平台,专科生搞定毕业论文不求人!

学霸同款8个AI论文平台&#xff0c;专科生搞定毕业论文不求人&#xff01; AI工具助力论文写作&#xff0c;专科生也能轻松应对 在当今学术环境中&#xff0c;AI工具已经成为许多学生提升写作效率、降低重复率的重要帮手。对于专科生而言&#xff0c;撰写毕业论文往往是一项既耗…

作者头像 李华
网站建设 2026/4/18 7:35:16

大数据毕设项目:基于django的服装品类趋势及消费者洞察数据分析可视化系统(源码+文档,讲解、调试运行,定制等)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

作者头像 李华
网站建设 2026/4/23 5:20:27

BootCriticalUpdatePlugin.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华