主页 > 开源代码  > 

LeetCode:2595.奇偶位数

LeetCode:2595.奇偶位数
给你一个 正 整数 n 。 用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。 用 odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。 请注意,在数字的二进制表示中,位下标的顺序 从右到左。 返回整数数组 answer ,其中 answer = [even, odd] 。 示例 1: 输入:n = 50 输出:[1,2] 解释: 50 的二进制表示是 110010。 在下标 1,4,5 对应的值为 1。 示例 2: 输入:n = 2 输出:[0,1] 解释: 2 的二进制表示是 10。 只有下标 1 对应的值为 1。 提示: 1 <= n <= 1000

方法一:遍历二进制数 把n当成一个二进制数来遍历。遍历的顺序是从低位到高位。具体来说,通过n & 1取二进制的最低位,然后把n右移一位,继续计算n & 1,这样可以取到次低位。如此循环,直到n=0为止。在遍历的过程中,统计奇偶下标比特位中的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

方法二:暴力解法

class Solution: def evenOddBit(self, n: int) -> List[int]: even = 0 odd = 0 binary_str = bin(n)[2:] for i in range(len(binary_str)): if binary_str[len(binary_str) - i - 1] == '1' and i % 2 == 0: even += 1 elif binary_str[len(binary_str) - i - 1] == '1' and i % 2 != 0: odd += 1 answer = [even, odd] return answer

标签:

LeetCode:2595.奇偶位数由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“LeetCode:2595.奇偶位数