力扣自带的int* returnSize, int** returnColumnSizes问题,使用malloc申请二维数组

在力扣算法题59.螺旋矩阵题中题目给了int* returnSize, int** returnColumnSizes

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** generateMatrix(int n, int* returnSize, int** returnColumnSizes){

}

 注释里给了三句解释:

  • 返回大小为 *returnSize 的数组数组。
  • 数组的大小作为 *returnColumnSizes 数组返回。
  • 注意:返回的数组和 *columnSizes 数组都必须被 malloced,假设调用者调用 free()

结合题目给的 输入和输出

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

不难理解,首先 *returnSize 指针指向的是数组的行,然后所谓的*returnColumnSizes 是数组的大小,也就是每个数组所包括的列数。

相当于把二维数组拆分成了行和列,最后按行返回。

题目59.螺旋矩阵的数组初始化代码如下:

    //初始化返回的结果数组的大小
    *returnSize = n;  //一共会有n行
    *returnColumnSizes = (int*)malloc(sizeof(int) * n); //初始化分配n

    //初始化返回结果数组ans
    int** nums = (int**)malloc(sizeof(int*) * n);
    int i;
    for(i = 0; i < n; i++) {
        nums[i] = (int*)malloc(sizeof(int) * n);
        (*returnColumnSizes)[i] = n;
    }

首先需要申请行指针,申请指向一维数组的指针,int **nums=(int **)malloc(sizeof(int*)*n);

这句的意思是 nums是一个指向指针的指针,申请了n个int*的空间,申请的二维数组有n行

接下来需要确定数组的列数:nums[i]=malloc(sizeof(int)*n);这个语句表示的第i行有n列,即一行有n个数。

这就把C踹了,以后用C++!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中所提到的是关于返回的二维指针数组的大小问题。根据引用内容中的描述,可以知道返回的二维指针数组最多可能包含多少个一级指针,就应该给`returnColumnSizes`申请对应`int`大小的空间。因此,在一开始就应该给`returnColumnSizes`申请相应大小的空间。 引用中的代码片段展示了一个关于`main`函数的猜测,其中包含了对`int** returnColumnSizes`的使用。通过代码可以看出,`returnColumnSizes`是一个指向列数组指针的指针,用来表示返回的二维数组的列数。在这个例子中,`returnColumnSizes`被传入`threeSum`函数,并在函数内部进行了处理。 综上所述,`int** returnColumnSizes`是用来表示返回的二维数组的列数的指针。它的大小应该与返回的二维指针数组的行数相对应,并且需要在函数内部进行申请和释放内存的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [关于leetcode上*returnSize 与 *returnColumnSizes的实际意义及使用](https://blog.csdn.net/weixin_45695709/article/details/123055736)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [详解力扣int *returnSizeint **returnColumnSizes](https://blog.csdn.net/m0_52775920/article/details/121461911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值