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.
Example 1:
Input: 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
Example 2:
Input: 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
classSolution {publicintclimbStairs(int n) {int memo[] =newint[n +1];returnhelper(0, n, memo); }privateinthelper(int i,int n,int memo[]) {if (i > n) return0;if (i == n) return1;if (memo[i] >0) return memo[i]; memo[i] =helper(i +1, n, memo)+helper(i +2, n, memo);return memo[i]; }}
Approach #3 Fibonacci Number
classSolution {publicintclimbStairs(int n) {if (n ==1) {return1; }int first =1;int second =2;for (int i =3; i <= n; i++) {int third = first + second; first = second; second = third; }return second; }}