Skip to content

Instantly share code, notes, and snippets.

@santhalakshminarayana
Last active September 6, 2019 12:16
Show Gist options
  • Save santhalakshminarayana/663fadfe5a7c0932229688a7a787d8d2 to your computer and use it in GitHub Desktop.
Save santhalakshminarayana/663fadfe5a7c0932229688a7a787d8d2 to your computer and use it in GitHub Desktop.
There exists a staircase with N steps, and you can climb up either 1 or 2 steps at a time. Given N, write a function that returns the number of unique ways you can climb the staircase. The order of the steps matters.
'''
For example, if N is 4, then there are 5 unique ways:
1, 1, 1, 1
2, 1, 1
1, 2, 1
1, 1, 2
2, 2
'''
'''
Condition:
---------
What if, instead of being able to climb 1 or 2 steps at a time,
you could climb any number from a set of positive integers X?
For example, if X = {1, 3, 5}, you could climb 1, 3, or 5 steps at a time.
'''
def climbStairs(n,steps):
'''
Input:
------
n(int):target step
steps(list):steps at a time
'''
climb_stairs=[0]*(n+1)
climb_stairs[0]=1
for i in steps:
if i<=n:
climb_stairs[i]=1
for i in range(1,n+1):
for step in steps:
if step+i <= n:
climb_stairs[i+step]+=climb_stairs[i]
return climb_stairs[n]
'''
Input:
n=45
steps=[1,3,5]
Output:
339200673
'''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment