题目链接:https://leetcode-cn.com/problems/counting-bits/
难度:简单
描述:
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
题解
- 当
i的末尾为1时,它二进制表示中1的个数比i - 1的多一个。(i是奇数) - 当
i的末尾为0时,它二进制表示中1的个数与i / 2的一样多。(i是偶数) - 当
i == 0时,1的个数是0。class Solution:def countBits(self, n: int) -> List[int]:ret = [0 for _ in range(n+1)]# ret[0] = 0for i in range(1, n+1):if i & 1 == 1:ret[i] = ret[i-1]+1else:ret[i] = ret[i//2]return ret
