1.题目
给定一个非负整数?numRows ,生成「杨辉三角」的前?numRows ?行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
来自:118. 杨辉三角 - 力扣(LeetCode)
2.解题思路
? ? ? ?创建一个二维容器记录每行的值,根据每行的长度先对容器进行resize操作;
???????根据杨辉三角元素值的特点,每行的首位元素为1,并且元素值为头顶两个元素值得和,对除去首尾的元素进行赋值。
???????最后返回结果容器。
杨辉三角具有以下性质:
1.每行数字左右对称,由 1?开始逐渐变大再变小,并最终回到 1。
2.第 n?行(从 0开始编号)的数字有 n+1?项,前 n 行共有 个数。
3.第 n行的第 m?个数(从 0?开始编号)可表示为可以被表示为组合数 ?4.?的展开式(二项式展开)中的各项系数依次对应杨辉三角的第?n行中的每一项。
3.代码
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans(numRows);
for(int i=0;i<numRows;i++){
ans[i].resize(i+1); //改变容器大小
ans[i][0]=ans[i][i]=1;
for(int j=1;j<i;j++){
ans[i][j]=ans[i-1][j]+ans[i-1][j-1];
}
}
return ans;
}
};
|