118.杨辉三角
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> result;
for (int i = 1; i <= numRows; i++)
{
vector<int> v;
//将每一层最左侧的1先放入
v.push_back(1);
//当层数大于2时执行一下代码
if (i > 2)
{
for(int j = 0;j < i - 2;j++)
{
/*因为容器下标从0开始,而i从1开始,当第i层时,要用第i- 1层的数值,而第i-1层对于下标来说就是[i - 2]*/
v.push_back(result[i - 2][j] + result[i - 2][j + 1]);
}
}
if (i > 1)
{
//放入每一层最右侧的1
v.push_back(1);
}
result.push_back(v);
}
return result;
}
};
思路:因为下一行中除了左右两边的数字1之外,所有其他的数字都为上一行的左右相加得出,如此上下两行便有联系。因为前两层为静态的,故在开始时直接处理前两层,即把数字直接放入容器中,后面的层数都跟上一层有关,即是动态的,使用下面代码处理:
if (i > 2)
{
for(int j = 0;j < i - 2;j++)
{
v.push_back(result[i - 2][j] + result[i - 2][j + 1]);
}
}