这道题是某天的每日一题,第一反应是遍历再遍历。但是显然是最不好的解法。
这题的规律是奇数比上一个数多1,偶数和它/2的那个一样多,结合lambda和Stream API,结果如下:
class Solution {
public int[] countBits(int num) {
return IntStream.range(0, num + 1).collect(() -> new int[num + 1], (arr, i) -> arr[i] = arr[i >> 1] + (i & 1), (x, y) -> {});
}
}