で338カウントビット質問のソース:LeetCode — 338. Counting Bits in cランタイムエラーLeetCode - C
紹介:非負の整数番号num考える を。 0≤i≤numの範囲にあるすべての数iに対して、2進表現で1の数を計算し、配列として返します。
例:num = 5の場合、[0,1,1,2,1,2]を返す必要があります。
フォローアップ:
は実行時のO(n個の*のはsizeof(整数))と解決策を考え出すことは非常に簡単です。しかし、あなたは線形時間でそれを行うことができますかO(n)/おそらく単一のパスで?
空間の複雑さはO(n)である必要があります。あなたは十分なメモリを割り当てていない
int* countBits(int num, int* returnSize) {
*returnSize=num+1;
int*arr=(int*)malloc(num+1);
arr[0]=0;
int i;
for(i=1;i<num+1;i++){
arr[i]=arr[i&(i-1)]+1;
printf("%d\n",arr[i]);
}
return arr;
}
むしろ 'int型* ARR =(int型*)はmalloc(NUM + 1)より;'、 'int型* ARR =のmalloc(はsizeof *編曲:*(NUM +を使用します1u)); ' – chux