LeetCode 118.杨辉三角-C语言
题目描述
解题思路
代码
int** generate(int numRows, int* returnSize, int** returnColumnSizes){
int i, j;
/* 定义并分配返回指针的空间 */
int **ret = malloc(sizeof(int *) * numRows);
/* 返回杨辉三角的行数 */
*returnSize = numRows;
/* 分配杨辉三角中每一列的空间 */
*returnColumnSizes = malloc(sizeof(int) * numRows);
for (i = 0; i < numRows; i++) {
/* 分配杨辉三角中每一行的具体空间 */
ret[i] = malloc(sizeof(int) * (i + 1));
/* 分配杨辉三角中每一行的列数 */
(*returnColumnSizes)[i] = i + 1;
/* 将每行的头尾元素置为1 */
ret[i][0] = ret[i][i] = 1;
/* 构造杨辉三角中的元素
* ret[i][j] = ret[i - 1][j - 1] + ret[i - 1][j]
*/
for (j = 1; j < i; j++) {
ret[i][j] = ret[i - 1][j - 1] + ret[i - 1][j];
}
}
return ret;
}