Menu
CoddyTech

Counting Bits

0以上の整数 n が与えられます。0から n までの各数 i について、i を2進数で表したときに1がいくつ現れるか数えてください。各要素 i が数 i の個数を表す、n+1 個の要素を持つ配列として、その個数を返してください。

関数

countBits(n: integer) → integer-array
ninteger
数える最後の数、0以上
戻り値integer-array
n+1 個の要素を持つカウント配列。要素 i は、i に含まれる 1 ビットの数を表します。

制約

  • 0 ≤ n ≤ 2 × 104

例

入力
n = 2
出力
[0, 1, 1]
説明
2進数では、0は0、1は1、2は10です。つまり、1が0個、次に1個、そして1個です。

lock icon提出時に隠しテスト+15件

challenge icon

発展問題

ビットを数える組み込み関数を使わず、また各数値を最初から数え直すことなく、O(n) 時間で配列全体を埋めることができますか?

コードをリセット
def countBits(n):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

入力

n = 2

期待値

[0, 1, 1]