题目链接
int** generate(int numRows, int* returnSize, int** returnColumnSizes)
{
int** ans=malloc(sizeof(int*) * numRows);
//开辟一块内存空间,用来返回ans,大小是numRows个int*型
int i=0;
*returnSize=numRows;
//*returnSize即返回数组的数据元素个数是numRows个
*returnColumnSizes=malloc(sizeof(int) * numRows);
//开辟一块内存空间,大小是numRows个int型,用来保存保存ans数组的i个元素,这个是用来之后操作的
for(i=0;i<numRows;++i)
{
ans[i] = malloc(sizeof(int) * (i + 1));
//开辟一块内存空间,大小是i+1,用来保存ans[i][j]的j个数
(*returnColumnSizes)[i] = i + 1;
//返回数组的第i个元素的数组大小是i+1
ans[i][0]=1;
ans[i][i]=1;
for(int j=1;j<i;++j){
ans[i][j]=ans[i-1][j]+ans[i-1][j-1];
}
}
return ans;
}
题目链接
int* getRow(int rowIndex, int* returnSize)
{
*returnSize = rowIndex + 1;
int* pre = malloc(sizeof(int) * (*returnSize));
memset(pre, 0, sizeof(int) * (*returnSize));
int* cur = malloc(sizeof(int) * (*returnSize));
memset(cur, 0, sizeof(int) * (*returnSize));
for (int i = 0; i <= rowIndex; ++i)
{
cur[0] = cur[i] = 1;
for (int j = 1; j < i; ++j)
{
cur[j] = pre[j - 1] + pre[j];
}
int* tmp = pre;
pre = cur;
cur = tmp;
}
return pre;
}