[Pregunta diaria] 21: triángulo Yang Hui

Descripción del título

Dado un entero numRows no negativo, se generan las primeras filas numRows del triángulo Yang Hui.

Inserte la descripción de la imagen aquí

En el triángulo Yang Hui, cada número es la suma de sus números superiores izquierdo y superior derecho.

Ejemplo:

Entrada: 5
Salida:

    [1],
   [1,1],
  [1,2,1],
 [1,3,3,1],
[1,4,6,4,1]

Código de problema

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;
    }
};
152 artículos originales publicados · 45 elogiados · 10,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/AngelDg/article/details/105166927
Recomendado
Clasificación