被力扣第一题卡住了 只能输出[ 而不是完整数组

题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。


来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
以下是我的解题代码:
/**

  • Note: The returned array must be malloced, assume caller calls free().
  • /
    int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int i,k,fg=0;
    int ret[2]={0};
    for(i=0;i<numsSize;i++){
      fg=target-nums[i];
      for(int k = i+1;k<numsSize;k++)
      {
          if(fg==nums[k])
          {
          printf("[%d,%d]",k,i);
          break;
          }
      }
    
    }
    ret[0]=i;
    ret[1]=k;
    return ret;
    }

用C语言写的代码 然后力扣表示我的输出只有一个“[”
我还特意用printf打印了一下 能打印出正确的结果 但是打印不算 一定要函数返回的数组

The returned array must be malloced, assume caller calls free().
这句话已经提示你需要动态分配数组空间了,你直接在函数里面定义的局部变量,在函数执行结束后,就无效了,所以返回是错误的值。


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int *array; 
    array=(int *)malloc(5*sizeof(int));
    int i,k,fg=0;
    int flag = 0;
    for(i=0;i<numsSize;i++)
    {
        fg=target-nums[i];
        for(k = i+1;k<numsSize;k++)
        {
            if(fg==nums[k])
            {
                flag = 1;
                //printf("[%d,%d]\n",k,i);
                break;
            }
        }
        if(flag == 1)
        {
            break;
        }
        
    }

    array[0]=i;
    array[1]=k;
    *returnSize = 2;
    return array;

}

img

没有返回returnsize