Description du titre
Étant donné un nombre entier non négatif, les premières lignes numRows du triangle Yang Hui sont générées.
Dans le triangle Yang Hui, chaque nombre est la somme de ses nombres supérieur gauche et supérieur droit.
Exemple:
Entrée: 5
Sortie:
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
Code de problème
class Solution {
public:
vector<vector<int>> generate(int numRows) {
// 开辟杨辉三角的空间(只是开辟了纵向空间)
vector<vector<int>> data(numRows);
// 如果输入为0,则直接输出。
if (numRows == 0)
{
return data;
}
int i, j;
// 将杨辉三角的顶端赋值为1
data[0].push_back(1);
// 核心思想:找出杨辉三角的规律,发现每一行头尾都是1,中间第[j]个数等于上一行[j-1]+[j]
for (i = 1; i < numRows; i++)
{
//给行首填上1
data[i].push_back(1);
for (j = 1; j < i; j++)
{
data[i].push_back(data[i-1][j-1]+data[i-1][j]);
}
// 给末尾填上1
data[i].push_back(1);
}
return data;
}
};
class Solution {
public:
vector<vector<int>> generate(int numRows) {
// 开辟杨辉三角的空间
vector<vector<int>> data(numRows);
// 如果输入为0,则直接输出。
if (numRows == 0)
{
return data;
}
int i, j;
// 将杨辉三角的顶端赋值为1
data[0].push_back(1);
for (i = 1; i < numRows; i++)
{
// 继承上一行数据
data[i] = data[i - 1];
// 从后向前累加
for (j = i - 1; j > 0; j--)
{
data[i][j] += data[i][j - 1];
}
// 给末尾填上1
data[i].push_back(1);
}
return data;
}
};