LeetCode 118. Pascal's Triangle

来源:互联网 发布:nike官网抢鞋软件 编辑:程序博客网 时间:2024/05/22 01:38

问题描述:

Given numRows, generate the first numRows of Pascal's triangle.

For example, given numRows = 5,
Return

[     [1],    [1,1],   [1,2,1],  [1,3,3,1], [1,4,6,4,1]]
分析:规律很简单,二维数组res。

第N行有N个元素,其中第一个和最后一个都是1,中间的数可由下列递推式求出

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

numRows=1和numRows=2的情况单独考虑到就行了。

AC代码如下:

  vector<vector<int>> generate(int numRows)     {        vector<vector<int> >res;        if(numRows == 0)            return res;        for(int i = 0;i<numRows;i++)        {            vector<int>row;            if(i == 0)//第一行只有一个1的情况            {                row.push_back(1);                res.push_back(row);            }            else if(i == 1)//第二行两个1 的情况            {                row.push_back(1);                row.push_back(1);                res.push_back(row);            }            else//大于2行的情况            {                row.push_back(1);//第一个1                for(int j = 1;j < i;j++)//中间的数用递推式求出                {                    int temp= res[i-1][j]+res[i-1][j-1];                    row.push_back(temp);                }                row.push_back(1);//最后一个1                res.push_back(row);            }        }        return res;    }


0 0
原创粉丝点击