Question
You are climbing a staircase. It takes
nsteps to reach the top.Each time you can either climb
1or2steps. 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 step + 1 step
- 2 steps
Example 2:
Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.
- 1 step + 1 step + 1 step
- 1 step + 2 steps
- 2 steps + 1 step
This is a 1ddp problem.

Using Tabulation, we can achieve a runtime of since we only need to traverse one branch.
Idea
- You can choose 1 or 2 steps which is a binary choice
- We don’t want to go over n
- i == n is the base case
- if a path reaches a base case return 1, otherwise if we overshoot, return 0
- Build an n sized cache to hold the result
- Our result is the sum of all of our branches