news 2026/4/23 6:41:43

2026-01-20-LeetCode刷题笔记-3314-构造最小位运算数组I

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026-01-20-LeetCode刷题笔记-3314-构造最小位运算数组I

title: 2026-01-20-LeetCode刷题笔记-3314-构造最小位运算数组I
date: 2026-01-20
tags:

  • 算法学习
  • LeetCode
  • 位运算

题目信息

  • 平台:LeetCode
  • 题目:3314. 构造最小位运算数组 I
  • 难度:Medium
  • 题目链接:Construct the Minimum Bitwise Array I

题目描述

给定一个整数数组 nums(题面为素数数组),对每个 nums[i] 寻找最小的非负整数 x,使得x | (x + 1) == nums[i]。若不存在这样的 x,返回 -1。


初步思路

  1. 观察x | (x + 1):它会把 x 的“最右侧第一个 0”变成 1,因此结果必然以连续的 1 结尾。
  2. 若 y = nums[i],设 y 末尾连续 1 的个数为 k,则最小的 x 就是把这段连续 1 中最高位的那个 1 清掉。
  3. 题面为素数数组,因此只有 y=2 为偶数且无解,其他 y 都是奇数可处理。

算法分析

  • 核心:统计 y 的末尾连续 1 的个数 k,然后x = y - (1 << (k - 1))
  • 技巧:x | (x + 1)的结果一定是奇数且以连续 1 结尾
  • 时间复杂度:O(n * k),k 为末尾连续 1 的数量(总体很小)
  • 空间复杂度:O(1)(不含输出)

代码实现(Python)

解法一:统计末尾连续 1

fromtypingimportListclassSolution:defminBitwiseArray(self,nums:List[int])->List[int]:ans=[]fornuminnums:ifnum==2:ans.append(-1)continuek=0whilenum&(1<<k):k+=1ans.append(num-(1<<(k-1)))returnans

解法二:位运算快速定位翻转位

fromtypingimportListclassSolution:defminBitwiseArray(self,nums:List[int])->List[int]:ans=[]fornuminnums:ifnum==2:ans.append(-1)continuet=num^(num+1)bit=(t+1)>>2ans.append(num^bit)returnans

总结与反思

  1. 关键在于“最右侧第一个 0 会被置 1”,因此结果以连续 1 结尾。
  2. 可以用位运算快速定位要翻转的那一位
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 11:22:37

AI 智能体全攻略:从入门到落地的实战指南

大家好我是菲菲~~如果你关注 2025 年的 AI 领域动态&#xff0c;想必会发现 “智能体&#xff08;Agents&#xff09;” 已成行业热词。这种具备自主工作能力的 AI 形态&#xff0c;既能处理日常琐事&#xff0c;也能驾驭企业级复杂多智能体工作流&#xff0c;其发展潜力不可限…

作者头像 李华
网站建设 2026/4/18 11:54:31

电力电子、电机驱动与数字滤波器的仿真及代码实现之旅

电力电子、电机驱动、数字滤波器matlab/simulink仿真模型实现及相关算法的C代码实现。 配置C2000 DSP ADC DAC PWM定时器 中断等模块&#xff0c;提供simulink与DSP的联合仿真以及硬件在环(PIL)和快速原型机设计(RCP)支持&#xff01;在电力电子和电机驱动领域&#xff0c;数字…

作者头像 李华
网站建设 2026/4/18 4:50:00

三菱FX3U步进电机换算FB块:让程序更模块化

三菱FX3U 步进电机换算FB块 FB块的使用可以使程序模块化简单化&#xff0c;进而提高了程序的稳定性和可移植性。 此例中使用FB块&#xff0c;可以实现步进电机的换算&#xff0c;已知距离求得脉冲数&#xff0c;已知速度可以求得频率。 程序中包含有FB和ST内容;移植方便&#…

作者头像 李华
网站建设 2026/4/21 2:10:33

本地Python脚本是否存在命令注入风险

是的&#xff0c;本地Python脚本依然存在严重的命令注入风险&#xff01;核心观点命令注入风险与脚本是否是本地还是Web无关&#xff0c;而与输入来源的可信度有关。 只要脚本使用了不可信的用户输入来构造命令&#xff0c;就存在注入风险。风险来源分析1. 用户输入来源&#x…

作者头像 李华
网站建设 2026/4/9 1:08:54

永久关闭windows系统的自动更新的6种方法 详细介绍

关闭Windows系统的自动更新可以通过多种方法实现&#xff0c;以下将详细介绍六种不同的方法。请注意&#xff0c;关闭自动更新可能会使您的系统面临安全风险&#xff0c;因为您将不会及时接收到最新的安全补丁和系统更新。在执行以下任何操作之前&#xff0c;请确保您了解潜在的…

作者头像 李华
网站建设 2026/4/17 14:26:54

VirtualLab Fusion应用:导入包含微结构高度数据的位图文件

摘要建模结果与测量数据的比较对于任何光学元件的设计过程都非常重要。因此&#xff0c;有必要将测量到的高度剖面&#xff08;例如微结构的高度剖面&#xff09;导入建模软件&#xff0c;以评估真实元件的性能。因此&#xff0c;在本文档中&#xff0c;我们将展示如何使用位图…

作者头像 李华