classSolution{ publicint[] countBits(int n) { if(n == 0){ returnnewint[1]; } int[] res = newint[n + 1]; res[0] = 0; res[1] = 1; for (int i = 2; i < n + 1; i++) { res[i] = res[largest_power(i)] + 1; } return res; }
intlargest_power(int N){ int N1 = N; N = N | (N >> 1); N = N | (N >> 2); N = N | (N >> 4); N = N | (N >> 8); N = N | (N >> 16); int maxPower = (N + 1) >> 1; return N1 & ~maxPower; } }