Pascal's Triangle II
https://leetcode.com/problems/pascals-triangle-ii | Easy |
Условие
Дано целое число rowIndex, необходимо вернуть строку Паскаля, которая находится на позиции rowIndex (индексация начинается с 0).
В треугольнике Паскаля каждая строка представляет собой список, где каждый элемент является суммой двух чисел, расположенных выше этого элемента в предыдущей строке.
Примеры
Input:
rowIndex = 3Output:
[1, 3, 3, 1]Explanation:
Третья строка треугольника Паскаля равна [1, 3, 3, 1].
Input:
rowIndex = 0Output:
[1]Explanation:
Нулевая строка треугольника Паскаля равна [1].
Input:
rowIndex = 1Output:
[1, 1]Explanation:
Первая строка треугольника Паскаля равна [1, 1].
Решение
fun getRow(rowIndex: Int): List<Int> {
// Инициализация строки с первым элементом 1
val row = mutableListOf(1)
// Для каждой строки от 1 до rowIndex
for (i in 1..rowIndex) {
// Добавляем элемент 1 в конец строки
row.add(0) // Для сдвига всех элементов
// Обновляем значения в строке начиная с конца
for (j in i downTo 1) {
row[j] = row[j] + row[j - 1]
}
}
return row
}
Временная сложность
O(n²), где n — индекс строки. Для каждой строки мы обновляем элементы, что занимает время пропорционально её длине.
Пространственная сложность
O(n), так как нам нужно хранить только одну строку треугольника с индексом n.