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;
}
相关推荐
XianxinMao3 小时前
RLHF技术应用探析:从安全任务到高阶能力提升
人工智能·python·算法
hefaxiang3 小时前
【C++】函数重载
开发语言·c++·算法
exp_add34 小时前
Codeforces Round 1000 (Div. 2) A-C
c++·算法
查理零世4 小时前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法
神探阿航4 小时前
第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
java·算法·蓝桥杯
皮肤科大白5 小时前
如何在data.table中处理缺失值
学习·算法·机器学习
不能只会打代码6 小时前
蓝桥杯例题一
算法·蓝桥杯
OKkankan6 小时前
实现二叉树_堆
c语言·数据结构·c++·算法
ExRoc8 小时前
蓝桥杯真题 - 填充 - 题解
c++·算法·蓝桥杯
利刃大大8 小时前
【二叉树的深搜】二叉树剪枝
c++·算法·dfs·剪枝