题目描述:
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
思路:
首先掌握向量二维数组的表示,vector<vector<int>> array; 然后对每一行rows进行处理,很容易观察出这样的表达式: rows[j]=(array[i-1][j-1]+array[i-1][j]); 处理完以后需要在末尾放入一。
代码:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> array; //向量二维数组的表示方法
if(numRows==0) return array;
for(int i=0; i<numRows; i++) {
vector<int> rows(1,1);//每一行为一维向量数组,首先赋值为1
for(int j=1 ;j<i; j++) {
rows.push_back(array[i-1][j-1]+array[i-1][j]); //处理
}
if(i>0) //末尾记得加一
rows.push_back(1);
array.push_back(rows);
}
return array;
}
};