Leetcode2595:奇偶位数
- 软件开发
- 2025-08-24 11:06:01

题目描述:
给你一个 正 整数 n 。
用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。
用 odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。
请注意,在数字的二进制表示中,位下标的顺序 从右到左。
返回整数数组 answer ,其中 answer = [even, odd] 。
代码思路: 初始化结果数组: ans = [0, 0]:这个数组用来存储结果,其中ans[0]表示偶数下标位置上值为1的个数,ans[1]表示奇数下标位置上值为1的个数。 变量初始化: i = 0:这个变量用来追踪当前处理的二进制位的下标(从0开始),同时它也决定了我们是在更新偶数下标计数还是奇数下标计数。由于初始时我们处理的是最右边的位(即最低位),所以i从0开始,表示第一个下标是偶数。 遍历二进制位: 使用while n:循环来遍历n的二进制表示中的每一位。当n变为0时,表示所有的位都已经被处理完毕。 检查当前位是否为1: n & 1:这个操作会对n进行按位与操作,与1进行按位与可以提取n的最低位(即最右边的位)。如果最低位是1,则结果为1;如果是0,则结果为0。ans[i] += n & 1:如果当前位是1,则将对应下标(偶数或奇数)的计数加1。 右移并更新下标: n >>= 1:将n右移一位,这样下一次循环就可以处理n的下一个二进制位了。i ^= 1:使用异或操作来切换下标的奇偶性。异或1可以切换一个整数的二进制表示中的最低位(0变1,1变0),因此在这里用来在偶数下标和奇数下标之间切换。 返回结果: 当所有的二进制位都被处理完毕后,循环结束,返回ans数组,其中包含了偶数下标和奇数下标位置上值为1的个数。 代码实现: class Solution: def evenOddBit(self, n: int) -> List[int]: ans = [0, 0] i = 0 while n: ans[i] += n & 1 n >>= 1 i ^= 1 return ans
Leetcode2595:奇偶位数由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Leetcode2595:奇偶位数”