2595. 奇偶位数
题目描述
给你一个 正 整数 n
。
用 even
表示在 n
的二进制形式(下标从 0 开始)中值为 1
的偶数下标的个数。
用 odd
表示在 n
的二进制形式(下标从 0 开始)中值为 1
的奇数下标的个数。
返回整数数组 answer
,其中 answer = [even, odd]
。
示例 1:
输入:n = 17 输出:[2,0] 解释:17 的二进制形式是 10001 。 下标 0 和 下标 4 对应的值为 1 。 共有 2 个偶数下标,0 个奇数下标。
示例 2:
输入:n = 2 输出:[0,1] 解释:2 的二进制形式是 10 。 下标 1 对应的值为 1 。 共有 0 个偶数下标,1 个奇数下标。
提示:
1 <= n <= 1000
解法
方法一:枚举
我们根据题意,枚举 $n$ 的二进制表示中从低位到高位的每一位,如果该位为 $1$,则根据该位的下标是奇数还是偶数,将对应的计数器加 $1$ 即可。
时间复杂度 $O(\log n)$,空间复杂度 $O(1)$。其中 $n$ 为给定的整数。
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
方法二
1 2 3 4 5 6 |
|
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 |
|