题目链接:
题目:
Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it.
题目分析:
给定一个非零整数,表示杨辉三角的行数,返回杨辉三角的值(二维数组)。
解题思路:
根据杨辉三角的特征,从第三行开始,除了第一个数和最后一个数是1,其他的数是由上一行的同位置的数+前一个位置的数,从而除了第一第二行是比较特殊的,因此单独处理。
AC代码:(C++)
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans(numRows);
if(numRows == 0)
return ans;
ans[0].push_back(1);
if(numRows == 1)
return ans;
ans[1].push_back(1);
ans[1].push_back(1);
if(numRows == 2)
return ans;
for(int i = 3;i <= numRows;++i)
{
for(int j = 0;j < i;++j)
{
if(j==0 || j==i-1)
ans[i-1].push_back(1);
else
{
ans[i-1].push_back(ans[i-2][j]+ans[i-2][j-1]);
}
}
}
return ans;
}
};