leetcode -- 118、119

118.杨辉三角

题目描述

给定一个非负整数 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 i, j;   //行、列
    int ** resArr = (int **) malloc (numRows * sizeof(int *));
    *returnSize = numRows;
    *returnColumnSizes = (int *) malloc (numRows * sizeof(int *));
    for (i = 1; i <= numRows; i ++)
    {
        resArr[i-1] = (int *)malloc(sizeof(int) * i);
        (*returnColumnSizes)[i-1] = i;      // 每列大小
        for (j = 0; j < i; j ++)
        {
            if (j == 0 || j == (i-1))
            {
                resArr[i-1][j] = 1;
            }
            else if (i >= 2 && j >= 1)
            {
                resArr[i-1][j] = resArr[i-2][j-1] + resArr[i-2][j];
            }
        }
    }
    return resArr;    
}

在这里插入图片描述

119.杨辉三角II

题目描述

在这里插入图片描述
示例:

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

解题思路

把118改改就行了

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* getRow(int rowIndex, int* returnSize)
{
    int i, j;   //行、列
    int ** resArr = (int **) malloc ((rowIndex+1) * sizeof(int *));
    *returnSize = rowIndex+1;
    for (i = 1; i <= rowIndex+1; i ++)
    {
        resArr[i-1] = (int *)malloc(sizeof(int) * i);
        for (j = 0; j < i; j ++)
        {
            if (j == 0 || j == (i-1))
            {
                resArr[i-1][j] = 1;
            }
            else if (i >= 2 && j >= 1)
            {
                resArr[i-1][j] = resArr[i-2][j-1] + resArr[i-2][j];
            }
        }
    }
    return resArr[rowIndex];    
}

在这里插入图片描述

发布了184 篇原创文章 · 获赞 253 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/williamgavin/article/details/104483078
今日推荐