网站开发公司网站安徽建设网站
2026/4/6 0:07:26 网站建设 项目流程
网站开发公司网站,安徽建设网站,微信公众号怎么做广告推广,自己创建网站教程title: 2026-01-20-LeetCode刷题笔记-3314-构造最小位运算数组I date: 2026-01-20 tags: 算法学习LeetCode位运算 题目信息 平台#xff1a;LeetCode题目#xff1a;3314. 构造最小位运算数组 I难度#xff1a;Medium题目链接#xff1a;Construct the Minimum Bitwise A…title: 2026-01-20-LeetCode刷题笔记-3314-构造最小位运算数组Idate: 2026-01-20tags:算法学习LeetCode位运算题目信息平台LeetCode题目3314. 构造最小位运算数组 I难度Medium题目链接Construct the Minimum Bitwise Array I题目描述给定一个整数数组 nums题面为素数数组对每个 nums[i] 寻找最小的非负整数 x使得x | (x 1) nums[i]。若不存在这样的 x返回 -1。初步思路观察x | (x 1)它会把 x 的“最右侧第一个 0”变成 1因此结果必然以连续的 1 结尾。若 y nums[i]设 y 末尾连续 1 的个数为 k则最小的 x 就是把这段连续 1 中最高位的那个 1 清掉。题面为素数数组因此只有 y2 为偶数且无解其他 y 都是奇数可处理。算法分析核心统计 y 的末尾连续 1 的个数 k然后x y - (1 (k - 1))技巧x | (x 1)的结果一定是奇数且以连续 1 结尾时间复杂度O(n * k)k 为末尾连续 1 的数量总体很小空间复杂度O(1)不含输出代码实现Python解法一统计末尾连续 1fromtypingimportListclassSolution:defminBitwiseArray(self,nums:List[int])-List[int]:ans[]fornuminnums:ifnum2:ans.append(-1)continuek0whilenum(1k):k1ans.append(num-(1(k-1)))returnans解法二位运算快速定位翻转位fromtypingimportListclassSolution:defminBitwiseArray(self,nums:List[int])-List[int]:ans[]fornuminnums:ifnum2:ans.append(-1)continuetnum^(num1)bit(t1)2ans.append(num^bit)returnans总结与反思关键在于“最右侧第一个 0 会被置 1”因此结果以连续 1 结尾。可以用位运算快速定位要翻转的那一位

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询