Я подозреваю, что у меня проблема с сохранением значений, которые мне нужно сохранить, в динамически размещенный массив, а также при возврате указанного динамически размещенного массива.
По-видимому, это известный вопрос интервьюпытаюсь решить на LeetCode.Функция получает массив, его размер, цель и указатель (насколько я понимаю, мне нужно выделить динамический массив для этого указателя).Я должен проверить, есть ли два числа в массиве, чья сумма равна цели, если это так, то я должен сохранить их индексы в динамически распределенном массиве (как я понимаю, его размер = 2), а затемЯ должен вернуть этот массив.
Я попытался посмотреть на предоставленное решение на LeetCode, я понимаю, но это не помогает мне понять, в чем проблема с моим решением.
Iпопытался посмотреть похожий вопрос здесь на stackoverflow, но я также не смог найти что-то, что помогло бы мне понять, что я делаю неправильно, и как это исправить.
Примечание: возвращаемый массив должен быть неправильным,предположим, что вызывающая сторона вызывает free ().
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int i,j;
//Allocating a dynamic memory to the received pointer, i.e.
//setting a dynamic array.
returnSize=malloc(2*sizeof(int));
if(!returnSize){
printf("Memory allocation error.\n");
exit(1);
}
//Searching for two numbers in 'nums' whose sum is equal to 'target',
//if found, save their indices to the dynamically allocated array
//and return it, if not, return the array with [-1,-1].
for(i=0;i<numsSize;i++){
for(j=i+1;j<numsSize;j++){
if(nums[i]+nums[j]==target){
returnSize[0]=i;
returnSize[1]=j;
return returnSize;
}
}
}
returnSize[0]=-1;
returnSize[1]=-1;
return returnSize;
}
Вывод nums = [2, 7, 11, 15] и target = 9,
- это динамически распределенный массив со значениями[0, 1].