/**
* <pre>
* 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?
* </pre>
*/
public class ClimbingStairs {
//Time Limit Exceeded
public class Solution {
public int climbStairs(int n) {
if (n < 0)
return 0;
if (n == 1)
return 1;
if (n == 2)
return 2;
return climbStairs(n - 1) + climbStairs(n - 2);
}
}
public class Solution2 {
public int climbStairs(int n) {
if (n < 0)
return 0;
if (n == 1)
return 1;
if (n == 2)
return 2;
int a = 1;
int b = 2;
int c = 0;
for (int i = 0; i < n - 2; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
}
}
* <pre>
* 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?
* </pre>
*/
public class ClimbingStairs {
//Time Limit Exceeded
public class Solution {
public int climbStairs(int n) {
if (n < 0)
return 0;
if (n == 1)
return 1;
if (n == 2)
return 2;
return climbStairs(n - 1) + climbStairs(n - 2);
}
}
public class Solution2 {
public int climbStairs(int n) {
if (n < 0)
return 0;
if (n == 1)
return 1;
if (n == 2)
return 2;
int a = 1;
int b = 2;
int c = 0;
for (int i = 0; i < n - 2; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
}
}