Climbing Stairs
Question
You are climbing a stair case. 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?
Note: Given n will be a positive integer.
Tags
- Dynamic Programming
Thought
For the last two steps on the stairs, you can choose to clime either 1 or t 2 steps. Thus the recurrence equation is
DP[i] = DP[i-1] + DP[i-2]
Code
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n < 1:
return 1
DP = [0 for _ in xrange(n + 1)]
DP[0] = 1
DP[1] = 1
for i in xrange(2, n + 1):
DP[i] = DP[i - 1] + DP[i - 2]
return DP[-1]