public class CountingBits {
    public static int[] countBits(int n) {
        int[] result = new int[n + 1];
        if (result.length > 1) result[1] = 1;
        for (int k = 2 ; k < result.length ; k *= 2) {
            for (int i = 0 ; i < k && i + k < result.length; i++) {
                result[k + i] = 1 + result[i];
            }
        }
        return result;
    }
}