Java解决比特位计数
01 题目
-
给定一个非负整数
n
,请计算0
到n
之间的每个数字的二进制表示中 1 的个数,并输出一个数组。示例 1:
输入: n = 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10
示例 2:
输入: n = 5 输出: [0,1,1,2,1,2] 解释: 0 --> 0 1 --> 1 2 --> 10 3 --> 11 4 --> 100 5 --> 101
02 知识点
- 动态规划
- 二进制函数
03 我的题解思路
public class countBits {
public static void main(String[] args) {
// 测试数据
int[] rs=countBits(5);
for (int i = 0; i < rs.length; i++) {
System.out.print(rs[i]+" ");
}
}
public static int[] countBits(int n) {
//计算从0到n,所以数组大小要加一
int[] rs=new int[n+1];
for (int i = 0; i < n+1; i++) {
// integer有内置的函数计算二进制
rs[i]=Integer.bitCount(i);
}
return rs;
}
}