跳到主要内容

2595.奇偶位数

链接:2595.奇偶位数
难度:Easy
标签:位运算
简介:给你一个 正 整数 n 。用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。用 odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。返回整数数组 answer ,其中 answer = [even, odd] 。

题解 1 - cpp

  • 编辑时间:2023-03-19
  • 内存消耗:7MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
vector<int> evenOddBit(int n) {
int even = 0, odd = 0;
for (int i = 0; i < 32; i++) {
if (n & (1 << i)) {
if (i & 1) odd++;
else even++;
}
}
return vector<int>{ even, odd };
}
};

题解 2 - python

  • 编辑时间:2023-03-19
  • 执行用时:40ms
  • 内存消耗:15MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def evenOddBit(self, n: int) -> List[int]:
even, odd = 0, 0
for i in range(32):
if n & (1 << i):
if i & 1:
odd += 1
else:
even += 1
return [even, odd]

题解 3 - rust

  • 编辑时间:2023-03-19
  • 内存消耗:1.9MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn even_odd_bit(n: i32) -> Vec<i32> {
let mut res = vec![0, 0];
for i in 0..32 {
if (n & (1 << i)) != 0{
res[i % 2] += 1;
}
}
res
}
}