LeetCode-119. Yang Hui Triangle II [Pascal's Triangle II] -Analysis and Code [Java]
1. Tema
Dado un índice k no negativo, donde k ≤ 33, devuelve la k-ésima fila del triángulo de Yanghui.
En el triángulo de Yanghui, cada número es la suma de los números de la parte superior izquierda y superior derecha.
Ejemplo:
输入: 3
输出: [1,3,3,1]
Avanzado:
¿Puede optimizar su algoritmo para la complejidad del espacio O (k)?
Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/pascals-triangle-ii Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.
Dos, análisis y código
1. Cálculo directo
(1) Pensando
De acuerdo con las propiedades del triángulo de Yanghui, el número m-ésimo en la enésima fila es C (n, m), combinado con la fórmula del número de combinación, el número m-ésimo se puede obtener como C (n, m) = C ( n, m-1) * (n-m + 1) / m.
(2) Código
class Solution {
public List<Integer> getRow(int rowIndex) {
//rowIndex从0计数
List<Integer> row = new ArrayList<>();
row.add(1);
for (int i = 1; i <= rowIndex; i++)
row.add((int) ((long) row.get(i - 1) * (rowIndex - i + 1) / i));
return row;
}
}
(3) Resultados
Tiempo de ejecución: 0 ms, superando al 100,00% de los usuarios
en todos los envíos de Java ; consumo de memoria: 36,5 MB, superando al 14,94% de los usuarios en todos los envíos de Java.
Tres, otro
Nada.