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.