DSA problem solution: 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
Solution:
public class Solution { int[] dp; public int ClimbStairs(int n) { dp = new int[n+2]; return Climb(0,n); } public int Climb(int currStep,int n) { if(currStep==n) return 1; if(currStep>n) return 0; int onestep= dp[currStep+1]; if(dp[currStep+1]==0) { onestep= Climb(currStep+1,n); dp[currStep+1] = onestep; } int twostep=dp[currStep+2]; if(dp[currStep+2]==0) { twostep= Climb(currStep+2,n); dp[currStep+2] = twostep; } return onestep+twostep; } }
0 comments :
Post a Comment