LC 2595.Number of Even and Odd Bits
题目描述
这是 LeetCode
上的 2595.
奇偶位数 ,难度为简单。
给你一个 正 整数 n
。
用 even
表示在 n
的二进制形式(下标从
0 开始)中值为 1
的偶数下标的个数。
用 odd
表示在 n
的二进制形式(下标从
0 开始)中值为 1
的奇数下标的个数。
返回整数数组 answer
,其中
answer = [even, odd]
。
示例 1:
1 |
|
示例 2:
1 |
|
提示:
1 <= n <= 1000
解答
方法一:模拟
根据题意按位判断,最后统计奇偶的个数。
1 |
|
时间复杂度:\(O(N)\),其中
N
为n
的位数。空间复杂度:\(O(1)\)。
方法二:模拟改进
可以改进模拟的写法,使其更加简洁。
1 |
|
时间复杂度:\(O(\log N)\),其中
N
为n
的位数。空间复杂度:\(O(1)\)。
方法三:位掩码 + 库函数
利用位掩码 0x55555555(二进制的 010101⋯),取出偶数下标比特和奇数下标比特,分别用库函数统计 1 的个数。
本题由于 n 范围比较小,取 0x5555 作为位掩码。
1 |
|
时间复杂度:\(O(1)\)。
空间复杂度:\(O(1)\)。
每题一图
LC 2595.Number of Even and Odd Bits
https://chen-huaneng.github.io/2023/12/31/2023-12-31-2023-12-31-lc-2595/