i am trying to solve leetcode question :-
https://leetcode.com/problems/largest-number/ Учитывая список не отрицательных целых чисел, расположите их так, чтобы они составляли наибольшее число.Код, указывающий на ошибку во время выполнения?
Например, если в [3, 30, 34, 5, 9] наибольшее сформированное число равно 9534330. Я пытаюсь сортировать строки, определяя компаратор для сравнения строк путем конкатенации справа налево или слева, направо.
Программа дает ошибку времени выполнения. Пожалуйста, помогите ....
int comp(const void* a, const void* b){
int p = *((int *)a);
int q = *((int *)b);
int size = 14;
char * first = (char *)malloc(size * sizeof(char));
char * second = (char *)malloc(size * sizeof(char));
first[0] = "\0";
second[0] = "\0";
sprintf(first, "%d",p);
sprintf(first, "%d",q);
sprintf(second, "%d",q);
sprintf(second, "%d",p);
return -1*strcmp(first, second);
}
char* largestNumber(int* nums, int numsSize) {
if(numsSize <=0)
return NULL;
qsort(nums, numsSize, sizeof(int), comp);
char * result = (char*)malloc(numsSize *5*sizeof(char));
int i;
for(i=0; i<numsSize; i++)
result = strcat(result, nums[i]);
return result;
}
Что такое ошибка? – David
«comp» действительно вызывает утечку памяти. – MikeCAT
Вы должны инициализировать буфер, на который указывает 'result', перед тем как передать его в' strcat() '. – MikeCAT