forked from haoel/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
climbStairs.cpp
32 lines (29 loc) · 865 Bytes
/
climbStairs.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Source : https://oj.leetcode.com/problems/climbing-stairs/
// Author : Hao Chen
// Date : 2014-06-27
/**********************************************************************************
*
* 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?
*
*
**********************************************************************************/
class Solution {
public:
int climbStairs(int n) {
if (n<=3) return n;
int a[2]={2,3};
for(int i=4; i<=n; i++){
int t = a[0] + a[1];
a[0] = a[1];
a[1] = t;
}
return a[1];
}
//Time too long
int climbStairs2(int n) {
if (n<=3) return n;
return climbStairs(n-1) + climbStairs(n-2);
}
};