DEV Community

Kaitian Xie
Kaitian Xie

Posted on • Edited on

3 2

LeetCode in Ruby: 70. Climbing Stairs

Dynamic Programming

def climb_stairs(n)
  p = 1
  q = 1

  (n - 1).times do
    temp = q
    q += p
    p = temp
  end

  q
end

This problem can be solved by using dynamic programming. We define f(n) as the number of ways you climb to the nth step from:

  1. one step from n-1th step
  2. two steps from n-2th step

Therefore, f(n) = f(n-1) + f(n-2), which is the same as the Fibonacci sequence. We have two bases cases: f(1) = 1 and f(2) = 2. The lines 4 and 5 are the first two numbers of the Fibonacci sequence. To get the nth number, we add up the numbers up to nth number. Here, we optimize the performance the just storing the previous two numbers.

Time complexity: O(n)

Space complexity: O(1)

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay