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] ]
思路:杨辉三角形,解决这道题就是要知道什么是杨辉三角形。
- 杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1。
- 第
行的数字个数为
个。
- 第
行的第
个数字为组合数
。
- 第
行数字和为
。
- 除每行最左侧与最右侧的数字以外,每个数字等于它的左上方与右上方两个数字之和(也就是说,第
行第
个数字等于第
行的第
个数字与第
个数字的和)。这是因为有组合恒等式:
。可用此性质写出整个杨辉三角形。
class Solution { public: vector<vector<int> > generate(int numRows) { vector<vector<int> > result; result.resize(numRows); //创建空间 for(int i=0;i<numRows;i++) { for(int j=0;j<=i;j++) { result[i].push_back(1);//首先将这些全部赋值为1 } } for(int i=0;i<numRows;i++) { for(int j=1;j<=i-1;j++)//从第三行开始,进行,你懂的 { result[i][j]=result[i-1][j-1]+result[i-1][j]; } } return result; } };