您的位置:首页 > 其它

LeetCode 118. Pascal's Triangle

2016-08-14 18:45 309 查看
问题描述:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode