/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* countBits(int num, int* returnSize) {
printf("num:%d \n",num);
int n = num +1;
int * p =NULL;
if(num == 0)
{
*returnSize =0;
return p;
}
p = (int*)malloc(sizeof(int)*n);
p[0] = 0;
*returnSize =n;
for(int i = 1;i<=num;i++)
{
int m = 0;
int k = i;
while(k)
{
k=k&(k-1);
m ++ ;
}
p[i] = m;
}
return p;
}
思考:
returnSize:返回 数组总大小!
*returnSize =num + 1;(包括 0)
函数里:
当输入num=0; 返回 空指针就好。
计算 一个数的二进制中的 1的个数 就是
while(k)
{
k = k&(k-1);
count++;
}