题目
分析题目
把三角形里的元素放在二维数组里
二维数组第i行有i+1个元素
每一行的第0个和第i-1个都为1
其余情况下nums[i][j]=nums[i-1][j-1]+nums[i-1][j];
代码段
int** generate(int numRows, int* returnSize, int** returnColumnSizes){
int i,j;
int** nums=(int**)malloc(sizeof(int*)*numRows); //二维数组的分配语句
*returnColumnSizes=malloc(sizeof(int)*numRows); //二维数组分配行数
*returnSize=numRows; //返回的行数
for(i=0;i<numRows;i++)
{
( *returnColumnSizes)[i]=i+1; //二维数组第0个元素赋值,代表本行有几个元素
nums[i]=(int*)malloc(sizeof(int)*(i+1)); //二维数组分配列数
for(j=0;j<=i;j++) //遍历
{
if(j==0)
{
nums[i][j]=1; //第0行为1
}
else if(j==i) //最后一行为1
{
nums[i][j]=1;
}
else
{
nums[i][j]=nums[i-1][j-1]+nums[i-1][j]; //其余项计算
}
}
}
return nums; //返回二维数组
}
时间复杂度和空间复杂度分析
执行n^2次,时间复杂度为O(n^2)
定义了一个二维数组,空间复杂度O(n^2)
总结
数据结构不太熟悉 对二维数组的分配方式不了解
可以想到具体的实现语句,都是细节的处理不当