赞
踩
前言:平平无奇的实现,数组理清了的话就很easy,值得说的是给定的参数
int* returnSize, int** returnColumnSizes
是什么意思,还得熟悉适应,博主还是看官解的代码和参数名字和提示来理解,
博主的理解是returnSize是外部定义的存放我们要创建的杨辉三角的int整型指针数组的大小的变量,传递进来的是地址,所以是int* ;
returnColumnSizes,如其名,返回的列的大小,具体其实是每一行杨辉三角的列数(每一行有几个数)看作外部定义了一个int* 的指针,把地址传递了进来,所以是int** 我们要malloc一个数组,存放每一行的个数,
目录
没啥值得思考的,就像题目动画的演示一样,把二维数组的上一行的那两个数加起来就好,考验的是数组的基本,由于遍历二维数组,所以易知时O(n^2);
- /**
- * 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* BuyMalloc(int i)
- {
- int* tmp = (int*)malloc(sizeof(int)* i);
- assert(tmp);
- return tmp;
- }
- int** generate(int numRows, int* returnSize, int** returnColumnSizes) {
- int** r = (int**)malloc(sizeof(int*) * numRows);
- *returnSize = numRows;
- *returnColumnSizes = (int*)malloc(sizeof(int) * numRows);
- for(int i = 1; i <= numRows; ++i){//i为第i行
- r[i - 1] = BuyMalloc(i);
- for(int j = 0; j < i; ++j){
- if(j == 0 || j == i - 1){//确立边界(特殊)
- r[i - 1][j] = 1;
- }
- else{//(一般情况)
- r[i - 1][j] = r[i - 2][j - 1] + r[i - 2][j];
- }
- }
- (*returnColumnSizes)[i - 1] = i;
- }
- return r;
- }
点点赞可怜可怜孩子吧!,嘤嘤嘤!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。