에서 338 계수의 비트 질문의 소스 : LeetCode — 338. Counting Bits in c런타임 오류 LeetCode - C
이 (가) 소개 : 아닌 음의 정수 번호 NUM을 감안할 때. 0 ≤ i ≤ num의 범위에있는 모든 숫자 i에 대해 이진 표현에서 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'보다 더 * 편곡 = (INT의 *)의 malloc (NUM + 1) : 그래서 당신은 크기를 곱해야 1u));' – chux