# Climbing Stairs

Nov 12, 2017

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

climbStairs(n) = climbStairs(n-1) + climbStairs(n-2);
climbStairs(0) = climbStairs(1) = 1;


int climbStairs(int n) {
if (n == 0 || n == 1) return 1;
return climbStairs(n-1) + climbStairs(n-2);
}


int climbStairs(int n) {
vector<int> vec(n+1,1);
for(int i = 2;i <= n;i++) {
vec[i] = vec[i-1] + vec[i-2];
}
return vec[n];
}


int climbStairs(int n) {
int a = 0,b = 1,t;
while(n--) {
t = a+b;
a = b;
b = t;
}
return b;
}

LeetCodeLeetCode

Balanced Binary Tree

Maximum Depth of Binary Tree