前言
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
一、例子
示例:

二、思路与代码
1.思路
先把计算一个数的二进制有多少个1的函数写出来,然后套进目标函数
2.代码
代码如下(示例):
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int func_bit(int num) {
int a = 0;
while(num) {
if( 1 == (num & 0x01) ) {
++a;
}
num = num >> 1;
}
return a;
}
int* countBits(int n, int* returnSize){
int i = 0;
int* arr = (int*)malloc(sizeof(int) * (n + 1));
*returnSize = 0;
for(i = 0; i <= n; i++) {
arr[i] = func_bit(i);
(*returnSize)++;
}
return arr;
}
结果如图所示:

本文介绍了一种计算从0到n范围内所有整数的二进制表示中1的个数的方法,并提供了一个示例C语言实现。通过定义一个辅助函数来计算单个整数中1的数量,再用循环遍历所有数值,最终生成包含所有计算结果的数组。
710

被折叠的 条评论
为什么被折叠?



