338. 比特位计数
这道题是一道dp问题,可以把每个二进制数拆成前部分和最后一个bit位,这样前部分的1比特个数就可以直接拿来用,我们只需要判断最后一个比特位的情况
class Solution { public int[] countBits(int n) { int[] bits = new int[n + 1]; for (int i = 1; i <= n; i++) { bits[i] = bits[i >> 1] + (i & 1); } return bits; } }这道题是一道dp问题,可以把每个二进制数拆成前部分和最后一个bit位,这样前部分的1比特个数就可以直接拿来用,我们只需要判断最后一个比特位的情况
class Solution { public int[] countBits(int n) { int[] bits = new int[n + 1]; for (int i = 1; i <= n; i++) { bits[i] = bits[i >> 1] + (i & 1); } return bits; } }