class Solution {
public int[] countBits(int n) {
Integer[] arr = new Integer[0];
List<Integer> list=new ArrayList<Integer>();
for (int i = 0; i < n+1; i++) {
String s = Integer.toBinaryString(i);
int ch;
int num=0;
for (int j = 0; j < s.length(); j++) {
ch = s.charAt(j);
if(ch=='1'){
num++;
}
}
list.add(num);
}
return Arrays.stream(list.toArray(arr)).mapToInt(Integer::valueOf).toArray();
}
}
一般数组是不能添加元素的,因为他们在初始化时就已定好长度
class Solution {
public int[] countBits(int n) {
int[] array = new int[n+1];
array[0] = 0;
for (int i = 1; i < array.length; i++) {
array[i] = array[i>>1]+(i&1);
}
return array;
}
}
n为偶数:bits[n]=bits[n/2]
n为奇数:bits[n]=bits[n/2]+1
n 除以 2 的余数可以通过 n & 1 得到
另: n是2的整数次幂时,n+1的二进制表示中:bits[n+1]=bits[n]+1
判断一个正整数是不是 2 的整数次幂,根据位运算&:n&(n-1)=0