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] ]
/**
* Return an array of arrays.
* The sizes of the arrays are returned as *columnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** generate(int numRows, int** columnSizes) {
int **res=(int **)malloc(sizeof(int *)*numRows);
*columnSizes=(int *)malloc(sizeof(int)*numRows);
int i,j;
for(i=0;i<numRows;i++)
{
(*columnSizes)[i]=i+1;
res[i]=(int *)malloc(sizeof(int)*(i+1));
res[i][0]=1;
res[i][i]=1;
for(j=1;j<i;j++)
res[i][j]=res[i-1][j]+res[i-1][j-1];
}
return res;
}