LeetCode 118. Pascal's Triangle(杨辉三角) -- c语言

118. Pascal's Triangle

Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.


In Pascal's triangle, each number is the sum of the two numbers directly above it.

Example:

Input: 5
Output:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

解题思想:

将Pascal‘s Triangle看成是下三角(如下所示),通过二重循环对二维数组进行赋值。Pascal’s Triangle具有对称性,在处理时应加以利用。

[

[1],

[1,1],

[1,2,1],

[1,3,3,1],

[1,4,6,4,1]

]

/*
执行用时 : 0 ms, 在Pascal's Triangle的C提交中击败了100.00% 的用户
内存消耗 : 7.1 MB, 在Pascal's Triangle的C提交中击败了8.13% 的用户
*/
/**
 * 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** generate(int numRows, int* returnSize, int** returnColumnSizes){
    //定义返回数组
    int** returned = (int**)malloc(sizeof(int*)*numRows);
    //定义返回数组每行的列数
    *returnColumnSizes = (int*)malloc(sizeof(int)*numRows);
    
    int i=0,j;
    
    while(i

后记:

  1. 要有将杨辉三角看成是下三角的思想。
  2. 对int** returned(返回数组)和*returnColumnSizes(返回列个数数组)两个数组的空间分配要清楚。
  3. 了解int* returnSize要使用时总是*returnSize,不然会出错。
  4. 利用好对称性,可以简化算法。如:returned[i][i-j]=returned[i][j];//利用前后对称性质,直接赋值

LeetCode 119. Pascal's Triangle II(杨辉三角II) -- c语言

链接:https://blog.csdn.net/d_benhua/article/details/90420060

你可能感兴趣的:(LeetCode,(力扣),C语言,算法,(Algorithm),数据结构,(Data,Structure),LeetCode,Pascal's,Triangle,118,c语言,杨辉三角)