Climbing Stairs

Feb 14, 2018

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

 

we can use dp array where dp[i]=dp[i-1]+dp[i-2]. It can be easily analysed that dp[i] is nothing but i^{th} fibonacci number.

Fib(n)=Fib(n-1)+Fib(n-2)

Now we just have to find n^{th} number of the fibonacci series having 1 and 2 their first and second term respectively i.e. Fib(1)=1 and Fib(2)=2.

Solution

var climbStairs = function(n) {
    if(n===1) { return 1; }
    var first = 1;
    var second = 2;
    for(var i=3; i<=n; i++)	{
	var third = first + second;
	first = second;
	second = third;
    }
    return second;
}

Complexity Analysis

  • Time complexity : O(n). Single loop upto n is required to calculate n^{th} fibonacci number.
  • Space complexity : O(1). Constant space is used.