Climbing Stairs
You are climbing a staircase. It takes n steps to reach the top. Each time you can either climb 1 or 2 steps. 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. 1 step + 1 step 2. 2 steps Example 2: Input: n = 3 Output: 3 Explanation: There are three ways to climb to the top. 1. 1 step + 1 step + 1 step 2. 1 step + 2 steps 3. 2 steps + 1 step Approach 1 Basic Recursion -Problem TLE class Solution { public int climbStairs ( int n ) { if (n== 0 ) return 1 ; if (n< 0 ) return 0 ; return climbStairs (n- 1 )+ climbStairs (n- 2 ); } } It recalculates the same subproblems many times . Time complexity: O(2ⁿ) → This will timeout for large n (like n = 45 or more). Approach 2- Add Memoization (Top-Down + Cache) class Solution { public int climbStai...