一. 题目描述
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]
]
二. 题目分析
关于帕斯卡三角形的定义,可参考:http://baike.baidu.com/link?url=qk_-urYQnO4v6v3P4BuMtCa0tMNUqJUk4lmbkb1aqbqikBU-ndiMlTF20fq2QUjTTFTeTohZ72KFxgBnz4sJha
将该三角形的左边对齐,就能够发现,tri[i][j] = tri[i-1][j-1] + tri[i-1][j]
。因此这里的代码并没有什么技巧。
三. 示例代码
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> result;
if (numRows <= 0)
return result;
else
{
vector<int> temp(1, 1);
result.push_back(temp);
if (numRows == 1) return result;
temp.push_back(1);
result.push_back(temp);
if (numRows == 2) return result;
for (int i = 2; i < numRows; ++i)
{
vector<int> temp(i + 1, 1);
for (int j = 1; j < i; ++j)
temp[j] = result[i - 1][j - 1] + result[i - 1][j];
result.push_back(temp);
}
}
return result;
}
};
原文:http://blog.csdn.net/liyuefeilong/article/details/50494736