零、欸嘿!
英雄哪里出来《算法零基础100讲》传送门
一、题目
力扣https://leetcode-cn.com/problems/pascals-triangle/
二、解题
思路:应该是这样
/**
* 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 numRows 行数,int*returnSize 数组长度,int**returnColumnSizes,这是每一行有多少列,这是个数组*/
int**ret=(int**)malloc(sizeof(int*)*numRows); //定义一个结果返回的数组,并申请存储空间
*returnSize=numRows; //*取值,取这个值变成numRows
*returnColumnSizes=(int*)malloc(sizeof(int)*numRows); // 给列的这个数组申请存储空间
for(int i=0;i<numRows;i++){ //然后就是循环两个for0.0 ,1.0,1.1,2.0,2.1,2.2等
ret[i]=(int*)malloc(sizeof(int)*(i+1)); ,给每一个横行申请空间
(*returnColumnSizes)[i]=i+1; //这就是每一列的长度,第一列是1,第二列是2 等等
for(int j=0;j<=i;j++){
if(i==j||j==0){ //i==j 和j==0时候是1
ret[i][j]=1;
continue; //下边就不要了,进行下一次循环
}
ret[i][j]=ret[i-1][j-1]+ret[i-1][j]; //正常的就是上边俩数的和
}
}
return ret;