Популярное

Музыка Кино и Анимация Автомобили Животные Спорт Путешествия Игры Юмор

Интересные видео

2025 Сериалы Трейлеры Новости Как сделать Видеоуроки Diy своими руками

Топ запросов

смотреть а4 schoolboy runaway турецкий сериал смотреть мультфильмы эдисон
dTub
Скачать

The Recursive Staircase - Top Down & Bottom Up Dynamic Programming ("Climbing Stairs" on LeetCode)

Автор: Back To Back SWE

Загружено: 2019-01-18

Просмотров: 78669

Описание:

Free 5-Day Mini-Course: https://backtobackswe.com
Try Our Full Platform: https://backtobackswe.com/pricing
📹 Intuitive Video Explanations
🏃 Run Code As You Learn
💾 Save Progress
❓New Unseen Questions
🔎 Get All Solutions


Question: You are climbing a staircase. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? (n is always a positive integer).

This is a classic problem. Let us tackle it thoroughly, there are many ways to do this that form the basis for how we do other problems bottom up with a DP table or top down with memoization.

The key with a problem like this is to instantly recognize that this turns into a series of subproblems, it is very similar to the Fibonacci sequence calculations.


Approach 1 (Top Down Recursion w/o Memoization)

Example:
n = 4

Let f(n) be the number of ways to climb n steps if we can take 1 or 2 steps.

f(4) = f(3) + f(2)
f(3) = f(2) + f(1)
f(2) = f(1) + f(0)

Base case: f(0) = 1 and f(any negative number) = 0

Notice that we are resolving subproblems that we already have an answer to and hence we are wasting time.

Complexities

Time: O( 2 ^ n )
Each recursive call can spawn 2 more calls, depth of the recursion tree is n. This is a loose bound, a tighter one is around O( 1.62 ^ n )

Space: O( n )
Call stack max depth. Max depth of the recursion tree goes n calls deep.


Approach 2 (Use Memoization On Top Down)

Memoization: An optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again.

Dynamic programming is all about storing the answers to previous sub-problems to speed up our runtimes by avoiding repeating work that has already been done.

Complexities

Time: O( n )
We cancel out many of the repeated calls that we might have made leading to us to have a linear time complexity.

Space: O( n )
Call stack max depth. And we will still have the dp table.


Approach 3 (Dynamic Programming Array)

DP is all about caching the answers to previous work and using it in current work.

dp[n] denotes the number of ways to climb n steps if we can take 1 or 2 steps.

dp[n] = dp[n - 2] + dp[n - 1]

The answer to n is the sum of the answer between two things:
our last step to n is 2 long
our last step to n is 1 long

Base Cases: dp[1] = 1 and dp[2] = 2

Complexities

Time: O( n )
A for loop making n - 2 iterations

Space: O( n )
We will be holding n + 1 entries in a dp array


Approach 4 (Fibonacci Number)

We notice that this is just the Fibonacci series. We can just use local variables to keep track of the items 1 and 2 behind where we stand.

Complexities

Time: O( n )
Still solve up to n subproblems.

Space: O( 1 )
No more dp array, we just use constant local variables


All other approaches are esoteric and are not practical in an interview, these include:

Using Binets Method & matrix multiplication
Using the mathematical, non-recursive, version of the Fibonacci Formula

++++++++++++++++++++++++++++++++++++++++++++++++++

HackerRank:    / @hackerrankofficial  

Tuschar Roy:    / tusharroy2525  

GeeksForGeeks:    / @geeksforgeeksvideos  

Jarvis Johnson:    / vsympathyv  

Success In Tech:    / @successintech  

The Recursive Staircase - Top Down & Bottom Up Dynamic Programming ("Climbing Stairs" on LeetCode)

Поделиться в:

Доступные форматы для скачивания:

Скачать видео mp4

  • Информация по загрузке:

Скачать аудио mp3

Похожие видео

Generate All Strings With n Matched Parentheses - Backtracking (

Generate All Strings With n Matched Parentheses - Backtracking ("Generate Parentheses" on LeetCode)

The Change Making Problem - Fewest Coins To Make Change Dynamic Programming

The Change Making Problem - Fewest Coins To Make Change Dynamic Programming

Самая длинная общая подпоследовательность (2 строки) — динамическое программирование и конкурирую...

Самая длинная общая подпоследовательность (2 строки) — динамическое программирование и конкурирую...

Egg Dropping Problem: Dynamic Programming Fundamentals & Understanding Subproblem Decomposition

Egg Dropping Problem: Dynamic Programming Fundamentals & Understanding Subproblem Decomposition

LLM и GPT - как работают большие языковые модели? Визуальное введение в трансформеры

LLM и GPT - как работают большие языковые модели? Визуальное введение в трансформеры

Lecture 19: Dynamic Programming I: Fibonacci, Shortest Paths

Lecture 19: Dynamic Programming I: Fibonacci, Shortest Paths

Может быть, некоторым людям стоит просто сдаться.

Может быть, некоторым людям стоит просто сдаться.

Теренс Тао о том, как Григорий Перельман решил гипотезу Пуанкаре | Лекс Фридман

Теренс Тао о том, как Григорий Перельман решил гипотезу Пуанкаре | Лекс Фридман

4 Hours Chopin for Studying, Concentration & Relaxation

4 Hours Chopin for Studying, Concentration & Relaxation

Maximum Sum Rectangle In A 2D Matrix - Kadane's Algorithm Applications (Dynamic Programming)

Maximum Sum Rectangle In A 2D Matrix - Kadane's Algorithm Applications (Dynamic Programming)

Усталость от саморазвития. Как на смену эйфории достижений пришло разочарование и крах иллюзий

Усталость от саморазвития. Как на смену эйфории достижений пришло разочарование и крах иллюзий

The 0/1 Knapsack Problem (Demystifying Dynamic Programming)

The 0/1 Knapsack Problem (Demystifying Dynamic Programming)

Собеседования по программированию на Python: всё, что вам нужно знать

Собеседования по программированию на Python: всё, что вам нужно знать

ЭТИ АЛГОРИТМЫ СДЕЛАЮТ ИЗ ТЕБЯ ПРОГРАММИСТА

ЭТИ АЛГОРИТМЫ СДЕЛАЮТ ИЗ ТЕБЯ ПРОГРАММИСТА

Расстояние редактирования между двумя строками — расстояние Левенштейна («Расстояние редактирован...

Расстояние редактирования между двумя строками — расстояние Левенштейна («Расстояние редактирован...

Но что такое нейронная сеть? | Глава 1. Глубокое обучение

Но что такое нейронная сеть? | Глава 1. Глубокое обучение

Mastering Dynamic Programming - How to solve any interview problem (Part 1)

Mastering Dynamic Programming - How to solve any interview problem (Part 1)

Учебник по Excel за 15 минут

Учебник по Excel за 15 минут

Минимальная стоимость подъёма по лестнице — динамическое программирование — Leetcode 746 — Python

Минимальная стоимость подъёма по лестнице — динамическое программирование — Leetcode 746 — Python

Динамическое программирование не так уж и сложно. Вы просто не знаете, что это такое.

Динамическое программирование не так уж и сложно. Вы просто не знаете, что это такое.

© 2025 dtub. Все права защищены.



  • Контакты
  • О нас
  • Политика конфиденциальности



Контакты для правообладателей: [email protected]