当前位置:   article > 正文

LeetCode:118.杨辉三角

LeetCode:118.杨辉三角

118. 杨辉三角 - 力扣(LeetCode)

前言:平平无奇的实现,数组理清了的话就很easy,值得说的是给定的参数

int* returnSize, int** returnColumnSizes

是什么意思,还得熟悉适应,博主还是看官解的代码和参数名字和提示来理解,

博主的理解是returnSize是外部定义的存放我们要创建的杨辉三角的int整型指针数组的大小的变量,传递进来的是地址,所以是int* ;

returnColumnSizes,如其名,返回的列的大小,具体其实是每一行杨辉三角的列数(每一行有几个数)看作外部定义了一个int* 的指针,把地址传递了进来,所以是int** 我们要malloc一个数组,存放每一行的个数,

目录

题目:

思路:

代码+注释:

每日表情包:


题目:

思路:

没啥值得思考的,就像题目动画的演示一样,把二维数组的上一行的那两个数加起来就好,考验的是数组的基本,由于遍历二维数组,所以易知时O(n^2);

代码+注释:

  1. /**
  2. * Return an array of arrays of size *returnSize.
  3. * The sizes of the arrays are returned as *returnColumnSizes array.
  4. * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
  5. */
  6. int* BuyMalloc(int i)
  7. {
  8. int* tmp = (int*)malloc(sizeof(int)* i);
  9. assert(tmp);
  10. return tmp;
  11. }
  12. int** generate(int numRows, int* returnSize, int** returnColumnSizes) {
  13. int** r = (int**)malloc(sizeof(int*) * numRows);
  14. *returnSize = numRows;
  15. *returnColumnSizes = (int*)malloc(sizeof(int) * numRows);
  16. for(int i = 1; i <= numRows; ++i){//i为第i行
  17. r[i - 1] = BuyMalloc(i);
  18. for(int j = 0; j < i; ++j){
  19. if(j == 0 || j == i - 1){//确立边界(特殊)
  20. r[i - 1][j] = 1;
  21. }
  22. else{//(一般情况)
  23. r[i - 1][j] = r[i - 2][j - 1] + r[i - 2][j];
  24. }
  25. }
  26. (*returnColumnSizes)[i - 1] = i;
  27. }
  28. return r;
  29. }

每日表情包:

点点赞可怜可怜孩子吧!,嘤嘤嘤! 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号