[Question quotidienne] 21: triangle Yang Hui

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.

Insérez la description de l'image ici

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;
    }
};
Publié 152 articles originaux · loué 45 · 10,000+ vues

Je suppose que tu aimes

Origine blog.csdn.net/AngelDg/article/details/105166927
conseillé
Classement