Climbing Stairs (Leetcode 70)

Problem Link: https://leetcode.com/problems/climbing-stairs/

Recursion + Memoization

class Solution:
    def climbStairs(self, n: int) -> int:
        
        # Recursion + Memoization
        
        def recursion(n,dp):
            if(n==0):
                return 1
            elif(n<0):
                return 0
            
            if(dp[n]!=-1):
                return dp[n]
            f=recursion(n-1,dp)
            s=recursion(n-2,dp)
            dp[n]=f+s
            return dp[n]

                 
        dp=[-1]*(n+1)
        return recursion(n,dp)

Tabulation

class Solution:
    def climbStairs(self, n: int) -> int:
        
        # Tabulation
        dp=[-1]*(n+1)
        dp[0]=1
        dp[1]=1
        for i in range(2,n+1):
            dp[i]=dp[i-1]+dp[i-2]
        return dp[n]

Last updated