讨论社区

378题目使用C语音实现中第一个参数matrix是什么含义?

int kthSmallest(int** matrix, int matrixSize, int* matrixColSize, int k)这个函数中,如果输入如下的测试用例,matrix是什么呀?

[[1,5],[10,11]]

3


0 人关注了该问题 关注

0

Faint praise • 1周前

感谢分享

0 个讨论

您需要登录后才可回复
0

娃他爸 • 3月前

研究了一下542题《01矩阵》,终于搞清楚了系统中的这几个参数的含义,以题目542为例说明:

int** updateMatrix(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes);

入参matrixSize:是输入矩阵的行数;

入参matrixColSize:是一个int matrixColSize[matrixSize]的指针数组,由于C不支持动态长度的数组,此处定义成int *,每一个元素matrixColSize[i]表示该行的元素个数(在矩阵类的题目中,每个元素都是相等的);

入参matrix:是一个类似于 int * matrix[matrixSize]的指针数组,由于C不支持动态长度的数组,此处定义成int **,每一个元素matrix[i]指向第i行的第一个元素的地址,实测可以确认每一行的元素内存是独立申请的(即第i行的最后一个元素和第i+1行的第一个元素并不相邻,使用的时候要注意);

出参returnSize:是输出矩阵的行数;

出参returnColumnSizes:和输入的matrixColSize类似,需要指向一个数组retColSizes[matrixSize],每个元素表示示该行元素的个数;

返回值:和输入的matrix类似,需要申请一个指针数组retRows[matrixSize],每个元素retRows[i]指向第i行的第一个元素的地址(每一行也是独立申请的);


详细的实现代码参考如下:


int** UpdateMatrix(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes)

{

int **retRows = (int **)malloc(sizeof(int*) * matrixSize);

int *retColSizes = (int *)malloc(sizeof(int) * matrixSize);


for (int i = 0; i < matrixSize; ++i) {

retRows[i] = (int *) malloc (sizeof(int) * matrixColSize[i]);

retColSizes[i] = matrixColSize[i];

for (int j = 0; j < retColSizes[i]; ++j) {

retRows[i][j] = matrix[i][j];

}

}


*returnSize = matrixSize;

*returnColumnSizes = retColSizes;


return retRows;

}



0 个讨论

您需要登录后才可回复
0

hxy1302 • 3月前

matrix就是这个二维数组。

matrixSize是第一维的长度

matrixColSize中的每一个元素代表第二维长度,在这道题里面都是相等的。

k是第二个输入(3)

0 个讨论

您需要登录后才可回复
您需要登录后才可以回复