快要疯掉了,到底哪里有错误啊,为什么memset(dp,0,sizeof(dp))完了之后dp[2..]之后都不是0,最后结果错误
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* countBits(int n, int* returnSize) {
int *dp=(int *)malloc(sizeof(int)*100001);
*returnSize=n+1;//规定返回数组的长度,你只返回了指针,所以需要这个来让外部知道你的数组有多长
//该题需要return一个数组,而在不申请空间(不malloc)的情况下函数内建立的数组是局部变量,无法带回主函数
memset(dp,0,sizeof(dp));
for(int i=0;i<=n;i++)
printf("%d ",dp[i]);
int i;
for(i=1;i<=n;i++)
{
int demp=i;
while(demp)
{
int n=demp%2;
demp=demp/2;
if(n==1)
dp[i]++;
}
}
return dp;
}