【Leetcode-118. 杨辉三角 -119. 杨辉三角Ⅱ】

简介: 【Leetcode-118. 杨辉三角 -119. 杨辉三角Ⅱ】

Leetcode-118. 杨辉三角

题目:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

输入: numRows = 5

输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

我们的思路是开辟一个二维数组的空间,然后根据题目要求把数据填进去,返回该二维数组的地址;注意,在二维数组中的一维数组也要开辟空间;

int** generate(int numRows, int* returnSize, int** returnColumnSizes)
    {
        //开辟二维数组的空间,返回的空间
        int** ret = (int**)malloc(sizeof(int*) * numRows);
        //返回的二维数组的行数
        *returnSize = numRows;
        //开辟返回的二维数组的列数
        *returnColumnSizes = (int*)malloc(sizeof(int) * numRows);
        for (int i = 0; i < numRows; i++)
        {
            //为第i行开辟的空间大小
            ret[i] = (int*)malloc(sizeof(int) * (i + 1));
            //第i行数组的大小
            (*returnColumnSizes)[i] = i + 1;
            //首位置1
            ret[i][0] = 1;
            ret[i][i] = 1;
            //除了首尾的位置等于上面两项之和
            for (int j = 1; j < i; j++)
            {
                ret[i][j] = ret[i - 1][j - 1] + ret[i - 1][j];
            }
        }
        //返回二维数组
        return ret;
    }

Leetcode-119. 杨辉三角Ⅱ

题目:给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

输入: rowIndex = 3

输出 : [1, 3, 3, 1]

这里的思路跟上面的相似,不同的是,这题不用返回该二维数组,只是返回某一行,所以只需要开辟每一行的空间即可,最后返回符合题意的行的地址即可;

int* getRow(int rowIndex, int* returnSize)
    {
        //返回行数
        *returnSize = rowIndex + 1;
        //创建一个二维数组
        int* ret[rowIndex + 1];
        int i, j;
        for (i = 0; i < rowIndex + 1; i++)
        {
            //为第i行开辟空间
            ret[i] = (int*)malloc(sizeof(int) * (i + 1));
            //首尾置1
            ret[i][0] = 1;
            ret[i][i] = 1;
            for (j = 1; j < i; j++)
            {
                ret[i][j] = ret[i - 1][j - 1] + ret[i - 1][j];
            }
        }
        //返回相应的行
        return ret[rowIndex];
    }
目录
相关文章
|
2月前
|
索引
leetcode-119:杨辉三角 II
leetcode-119:杨辉三角 II
40 0
|
22天前
|
存储 SQL 算法
LeetCode 题目 118:杨辉三角
LeetCode 题目 118:杨辉三角
|
22天前
|
缓存 算法 数据可视化
LeetCode 题目 119:杨辉三角 II
LeetCode 题目 119:杨辉三角 II
|
2月前
|
C++
杨辉三角(C++)
杨辉三角(C++)
34 1
|
2月前
|
C++ 索引
杨辉三角 II(C++)
杨辉三角 II(C++)
16 0
|
2月前
leetcode-118:杨辉三角
leetcode-118:杨辉三角
36 0
|
10月前
leetcode:118. 杨辉三角
函数原型:int** generate(int numRows, int* returnSize, int** returnColumnSizes) 参数解析:numRows是指明要求前几行杨辉三角 returnSize是返回指针数组的元素个数 returnColumnSizes是指明杨辉三角每一行有几个元素
44 0
|
11月前
力扣118.杨辉三角
给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。链接位置:力扣。
29 0