欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > Leetcode2595:奇偶位数

Leetcode2595:奇偶位数

2025/2/22 16:28:46 来源:https://blog.csdn.net/m0_67598823/article/details/145752798  浏览:    关键词:Leetcode2595:奇偶位数

题目描述:

给你一个  整数 n 。

用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。

用 odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。

请注意,在数字的二进制表示中,位下标的顺序 从右到左

返回整数数组 answer ,其中 answer = [even, odd] 。

代码思路:

  1. 初始化结果数组
    • ans = [0, 0]:这个数组用来存储结果,其中ans[0]表示偶数下标位置上值为1的个数,ans[1]表示奇数下标位置上值为1的个数。
  2. 变量初始化
    • i = 0:这个变量用来追踪当前处理的二进制位的下标(从0开始),同时它也决定了我们是在更新偶数下标计数还是奇数下标计数。由于初始时我们处理的是最右边的位(即最低位),所以i从0开始,表示第一个下标是偶数。
  3. 遍历二进制位
    • 使用while n:循环来遍历n的二进制表示中的每一位。当n变为0时,表示所有的位都已经被处理完毕。
  4. 检查当前位是否为1
    • n & 1:这个操作会对n进行按位与操作,与1进行按位与可以提取n的最低位(即最右边的位)。如果最低位是1,则结果为1;如果是0,则结果为0。
    • ans[i] += n & 1:如果当前位是1,则将对应下标(偶数或奇数)的计数加1。
  5. 右移并更新下标
    • n >>= 1:将n右移一位,这样下一次循环就可以处理n的下一个二进制位了。
    • i ^= 1:使用异或操作来切换下标的奇偶性。异或1可以切换一个整数的二进制表示中的最低位(0变1,1变0),因此在这里用来在偶数下标和奇数下标之间切换。
  6. 返回结果
    • 当所有的二进制位都被处理完毕后,循环结束,返回ans数组,其中包含了偶数下标和奇数下标位置上值为1的个数。

代码实现:

class Solution:def evenOddBit(self, n: int) -> List[int]:ans = [0, 0]i = 0while n:ans[i] += n & 1n >>= 1i ^= 1return ans

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词