mirror of
https://github.com/TheAlgorithms/Ruby
synced 2024-12-25 21:58:57 +01:00
Added climbing-stairs solution, with description
This commit is contained in:
parent
02db2b9550
commit
5a2156d0ce
1 changed files with 58 additions and 0 deletions
58
dynamic_programming/climbing-stairs.rb
Normal file
58
dynamic_programming/climbing-stairs.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
#You are climbing a staircase. It takes n steps to reach the top.
|
||||
#Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
|
||||
|
||||
#Example 1:
|
||||
#Input: n = 2
|
||||
#Output: 2
|
||||
#Explanation: There are two ways to climb to the top.
|
||||
#1. 1 step + 1 step
|
||||
#2. 2 steps
|
||||
|
||||
#Example 2:
|
||||
#Input: n = 3
|
||||
#Output: 3
|
||||
#Explanation: There are three ways to climb to the top.
|
||||
#1. 1 step + 1 step + 1 step
|
||||
#2. 1 step + 2 steps
|
||||
#3. 2 steps + 1 step
|
||||
|
||||
#Constraints:
|
||||
#1 <= n <= 45
|
||||
|
||||
|
||||
|
||||
|
||||
#Dynamic Programming, Recursive Bottom Up Approach - O(n) Time / O(n) Space
|
||||
#Init memoization hash (only 1 parameter)
|
||||
#Set base cases which are memo[0] = 1 and memo[1] = 1, since there are only 1 way to get to each stair
|
||||
#Iterate from 2..n and call recurse(n, memo) for each value n.
|
||||
#Return memo[n].
|
||||
|
||||
#recurse(n, memo) - Recurrence Relation is n = (n - 1) + (n - 2)
|
||||
#return memo[n] if memo[n] exists.
|
||||
#otherwise, memo[n] = recurse(n - 1, memo) + recurse(n - 2, memo)
|
||||
|
||||
|
||||
# @param {Integer} n
|
||||
# @return {Integer}
|
||||
def climb_stairs(n)
|
||||
memo = Hash.new
|
||||
|
||||
memo[0] = 1
|
||||
memo[1] = 1
|
||||
|
||||
return memo[n] if n <= 1 && n >= 0
|
||||
|
||||
(2..n).each do |n|
|
||||
recurse(n, memo)
|
||||
end
|
||||
|
||||
memo[n]
|
||||
end
|
||||
|
||||
|
||||
def recurse(n, memo)
|
||||
return memo[n] if memo[n]
|
||||
|
||||
memo[n] = recurse(n - 1, memo) + recurse(n - 2, memo)
|
||||
end
|
Loading…
Reference in a new issue