Pascal's Triangle
Given numRows, generate the first numRowsof Pascal's triangle.
For example, given numRows = 5,
Return
返回如图示形式的杨辉三角二维数组。数据结构肯定做过的。用二维数组保存的杨辉三角可以是像题目要求那样构造,如下
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
也可以这样构造,第一行是n个1,n是输入
1 1 1 1 1
1 2 3 4
1 3 6
1 4
1
思路都比较简单
顺带一提,119题其实跟这题是一样的,只是返回最后一行而已。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> res;
if (0 == numRows) return res;
else if (1 == numRows)
{
vector<int> temp;
temp.push_back(1);
res.push_back(temp);
}
else if (2 == numRows)
{
vector<int> temp;
temp.push_back(1);
res.push_back(temp);
temp.push_back(1);
res.push_back(temp);
}
else
{
vector<int> temp;
temp.push_back(1);
res.push_back(temp);
vector<int> tempIn;//第一行
tempIn.push_back(1);
tempIn.push_back(1);
vector<int> tempOut;//第二行
tempOut.push_back(1);
tempOut.push_back(2);
tempOut.push_back(1);
int x = 3;
while (x < numRows)//第三行及之后的
{
res.push_back(move(tempIn));
tempIn = move(tempOut);
tempOut.push_back(1);
int i = 0;
while (i < x - 1)
{
tempOut.push_back(tempIn[i] + tempIn[i + 1]);
i++;
}
tempOut.push_back(1);
x++;
}
res.push_back(move(tempIn));
res.push_back(move(tempOut));
}
return res;
}
};