C 语言 Leetcode 的二维动态数组

问题描述 投票:0回答:1

所以我试图解决https://leetcode.com/problems/3sum/ 但我不明白我应该在 **return_column_sizes 变量中传递给他们什么以及如何做到这一点,以便他们开始接受我返回的答案。

PS:我知道我的答案只是反驳! **我想了解他们想从我这里收到的return_column_sizes中的值是什么,之后我可以自己编写算法。这就是为什么我只做了三个三元组 [0,1,2] [3,4,5] [6,7,8] 并试图用它们来回答,但 Leetcode 编译器根本不理解我的答案

来自 Leetcode 的描述: /**

  • 返回大小为 *returnSize 的数组。
  • 数组的大小以 *returnColumnSizes 数组的形式返回。
  • 注意:返回的数组和 *columnSizes 数组都必须进行 malloc,假设调用者调用 free()。 */

这是我的代码:

int** dynamic_array_alloc(size_t N, size_t M)
{
    int **A = (int **)malloc(N*sizeof(int *));
    for (int i=0; i<N; i++)
    {
        A[i] = (int *)malloc(M*sizeof(int));
    }
    return A;
}

void dynamic_array_print(int **A, size_t N, size_t M)
{
    for (int i=0; i<N; i++)
    {
        printf("A[%d] = %p\t", i, A[i]);
        for (int j=0; j<M; j++)
            printf("%*d", 5, A[i][j]);
            printf("\n");
    }
    printf("\n");
}

int** threeSum(
  int* nums, int numsSize, 
  int* return_size, int** return_column_sizes
)
{
    int **result = dynamic_array_alloc(3, 3);
    int k=0;

    *return_size=3;
    *return_column_sizes=*result;

    for (int i=0; i<3; i++)
        for (int j=0; j<3; j++) result[i][j]=k++;

    dynamic_array_print(result, 3, 3);

    return result;
}

Screenshot

arrays c dynamic
1个回答
1
投票

*return_column_sizes
的每个元素设置为3。

*return_size = 3;
*return_column_sizes = malloc(*return_size * sizeof *return_column_sizes);
for (int i = 0; i < *return_size; i++) (*return_column_sizes)[i] = 3;
© www.soinside.com 2019 - 2024. All rights reserved.