Blind 75 — Вопросы по программированию и техническому интервью — серия объяснений
Проблема:
Объяснение:
Код для этой задачи очень прост, но интуиция сложнее кода. Всегда есть решение грубой силы, но оно равно O(n²) и является тривиальным. Это задача динамического программирования, которая помогает при поиске решения. Решение, которое не требует массива и, следовательно, пространства O(1), заключается в отслеживании количества шагов 1 и шагов 2. Если вы знаете классические функции, это просто последовательность Фибоначчи. Возможность установить эту связь является ключом к решению этой проблемы наиболее эффективным способом.
Решение для динамического программирования: O(n)
Сначала инициализируйте одношаговые и двухшаговые переменные, затем от i до n минус два (записывается как n-1, но n-1 не включено). Затем мы сохраняем одну переменную, добавляем две переменные, затем устанавливаем две в одну. Повторение этого и возвращение одного, а не двух, потому что это предполагает, что вы можете сделать два шага от n-1 до n, даст нам результат.
class Solution: def climbStairs(self, n: int) -> int: one, two = 1, 1 for i in range(n — 1): tmp = one one += two two = tmp return one
Информация:
Веб-сайт: nkwade.dev
LinkedIn: linkedin.com/in/nkwade
GitHub: github.com/nkwade
Электронная почта: [email protected]