Как вернуть динамически распределенный массив в main? - PullRequest
0 голосов
/ 30 июня 2019

Я подозреваю, что у меня проблема с сохранением значений, которые мне нужно сохранить, в динамически размещенный массив, а также при возврате указанного динамически размещенного массива.

По-видимому, это известный вопрос интервьюпытаюсь решить на 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].

...