LeetCode:杨辉三角

1、问题概述:给一个非负整数,生成杨辉三角的前n行

2、示例:

示例1

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例2

输入: numRows = 1
输出: [[1]]

3、分析

(1)每行的第一个和最后一个都是以1为结尾

(2)剩下的情况是 紧挨着上一行的 左元素 和 右元素 进行相加 :

num[i][j] = num[i-1][j-1] + num[i-1][j]

4、代码:

cpp 复制代码
/**
    返回一个*returnSize大小的数组
    数组的大小以*returnColumnSizes的形式返回
    返回的数组和*columnSizes数组必须是malloced
*/ 
int** generate(int numRows, int* returnSize, int** returnColumnSizes) {
    // 定义存放指针的空间
    int **res=malloc(sizeof(int *)*numRows);

    // 返回多少行数
    *returnSize=numRows;

    // 开辟每一列的空间
    *returnColumnSizes=malloc(sizeof(int *)*numRows);

    for(int i=0;i<numRows;i++){
        // 从第0个元素进行赋值
        (*returnColumnSizes)[i]=i+1;
        
        // 分配二维数组的列数
        res[i]=(int *)malloc(sizeof(int)*(i+1));

        for(int j=0;j<=i;j++){
            if(j==0 || j==i){
                res[i][j]=1;
            }else{
                res[i][j]=res[i-1][j-1] + res[i-1][j];
            }
        }
    }
    return res;
}
相关推荐
xin007hoyo3 小时前
算法笔记.染色法判断二分图
数据结构·笔记·算法
程序员曦曦4 小时前
17:00开始面试,17:08就出来了,问的问题有点变态。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
এ᭄画画的北北6 小时前
力扣-234.回文链表
算法·leetcode·链表
八股文领域大手子6 小时前
深入理解缓存淘汰策略:LRU 与 LFU 算法详解及 Java 实现
java·数据库·算法·缓存·mybatis·哈希算法
__lost7 小时前
C++ 解决一个简单的图论问题 —— 最小生成树(以 Prim 算法为例)
算法·图论·最小生成树·prim算法
wuqingshun3141598 小时前
蓝桥杯 11. 打印大X
数据结构·算法·职场和发展·蓝桥杯·深度优先
Blossom.1188 小时前
量子网络:构建未来通信的超高速“高速公路”
网络·opencv·算法·安全·机器学习·密码学·量子计算
A林玖9 小时前
【机器学习】朴素贝叶斯
人工智能·算法·机器学习
六边形战士DONK9 小时前
神经网络基础[损失函数,bp算法,梯度下降算法 ]
人工智能·神经网络·算法
wuqingshun3141599 小时前
蓝桥杯 2. 确定字符串是否是另一个的排列
数据结构·c++·算法·职场和发展·蓝桥杯