题目链接:118. 杨辉三角
2020.10.15第一次解答:
解题思路
其实三角形的排布会影响思考,我们不妨依次按阶梯的样式列出原杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
......
不难发现一个规律,下一层第i个元素(末尾元素除外),其实是由上一次第i个元素和第i-1个元素相加得到的
根据这个规律,可以写出如下代码:
C++代码
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans;
for (int i = 0; i < numRows; i++) {
vector<int> tmp;
if (i < 2) for (int j = 0; j <= i; j++) tmp.emplace_back(1);
else {
tmp.emplace_back(1); //首位的1
for (int j = 1; j < i; j++) {
tmp.emplace_back(ans[i - 1][j] + ans[i - 1][j - 1]);
}
tmp.emplace_back(1); //末位的1
}
ans.emplace_back(tmp);
}
return ans;
}
};