3315. 构造最小位运算数组 II

https://leetcode.cn/circle/discuss/CaOJ45/

 

 

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

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

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

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

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

 

复制代码
class Solution:
    def minBitwiseArray(self, nums: List[int]) -> List[int]:

        #  二进制把最右边的0的右边的1改成0
        # 先取反
        # 取到lowbit->最右边的0 该位置为1,其余全0
        # 右移1位 -> 最右边的0的右边的1,该位置为1,其余全0
        # 异或运算,把1改成0

        for i,x in enumerate(nums):
            if x==2:
                nums[i]=-1
            else:
                t = ~x
                nums[i] = nums[i]^((t&-t)>>1)
        return nums
        
复制代码

 

posted @   xiaoxinlong  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
AmazingCounters.com
点击右上角即可分享
微信分享提示