这个问题叫做“Convert an Array Into a 2D Array With Conditions”,我试图用 C 来解决这个问题。但是我无法理解我必须返回什么以及函数中传递的参数,例如它的用途一个名为 return size 的指针和一个指向名为 columnsize 的指针的指针。
问题就像... **给定一个整数数组 nums。您需要从 nums 创建一个满足以下条件的二维数组:
->二维数组应仅包含数组 nums 的元素。
->二维数组中的每一行都包含不同的整数。
->二维数组中的行数应该最少。
->返回结果数组。如果有多个答案,请返回其中任何一个。
请注意,二维数组每行可以有不同数量的元素。**
示例是:-
** 输入:nums = [1,3,4,1,2,3,1]
输出:[[1,3,4,2],[1,3],[1]]
说明:我们可以创建一个包含以下行的二维数组:
使用了 nums 的所有元素,并且二维数组的每一行都包含不同的整数,因此这是一个有效的答案。 可以证明,有效数组中的行数不能少于 3 行。**
/*
* 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** findMatrix(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){
}
但我无法理解我必须返回什么以及在函数中传递的参数,例如使用名为“返回大小”的指针和一个指向名为“列大小”的指针的指针。
参数
nums
是指向包含输入值的数组的第一个元素的指针。
参数
numsSize
是上面数组中元素的数量。
参数
returnSize
是一个指针,指向函数必须在输出数组中存储行数的位置。
参数
returnColumnSizes
是一个指针,指向函数必须存储其分配的内存指针的位置,并且该内存将包含一系列值,这些值是输出“数组”的行中的元素数量。例如,“数组”[[1, 3, 4, 2], [1, 3], [1]] 包含三行,分别包含 4、2 和 1 个元素,因此您可以将 returnColumnSizes
设置为指向您存储 int
值 4、2 和 1 的内存。
函数返回值是指向函数分配的内存的指针,并且该内存针对输出数组中的每一行包含一个指针。这些指针中的每一个都指向您的函数分配的附加内存,并且对于每个指针,该内存包含输出数组的相应行的元素。