Problem Statement could be found @https://leetcode.com/problems/climbing-stairs/
Approach -
Let us consider n =5
Initially we are at Step 0
How many ways to reach :
Step 1 : There is only 1 way ie by taking 1 step at step 0
Step 2 : There are 2 ways - By taking 1 step at step 1 or by taking 2 steps at step 0
so f(2) = f(0) + f(1)
Step 3- We can reach from step 1 and step 2 both. If we come from step 1,then there is 1 way.
If we come from step 2, then there are 2 ways ( as to reach step 2 from step 0 there were 2 ways)
So again f(3) = f(2) + f(1)
Similarly, for f(4) = f(3) + f(2)
So this is coming up like a recursion which when generalized would take form of
f(n) = f(n-2) + f(n-1)
This relation is Fibonacci series
Code Snippet -
class Solution {
public:
int climbStairs(int n) {
int f1=0;
int f2 = 1;
int count =0;
while (count <n){
int temp = f1 + f2;
f1 = f2;
f2 = temp;
count++;
}
return f2;
}
};
Approach -
Let us consider n =5
Initially we are at Step 0
How many ways to reach :
Step 1 : There is only 1 way ie by taking 1 step at step 0
Step 2 : There are 2 ways - By taking 1 step at step 1 or by taking 2 steps at step 0
so f(2) = f(0) + f(1)
Step 3- We can reach from step 1 and step 2 both. If we come from step 1,then there is 1 way.
If we come from step 2, then there are 2 ways ( as to reach step 2 from step 0 there were 2 ways)
So again f(3) = f(2) + f(1)
Similarly, for f(4) = f(3) + f(2)
So this is coming up like a recursion which when generalized would take form of
f(n) = f(n-2) + f(n-1)
This relation is Fibonacci series
Code Snippet -
class Solution {
public:
int climbStairs(int n) {
int f1=0;
int f2 = 1;
int count =0;
while (count <n){
int temp = f1 + f2;
f1 = f2;
f2 = temp;
count++;
}
return f2;
}
};
No comments:
Post a Comment