[Leetcode] Climbing Stairs

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?

 

其实就是斐波那契数列,递推求解便知。

 

 1 class Solution {

 2 public:

 3     int climbStairs(int n) {

 4         if (n==1) return 1;

 5         if (n==2) return 2;

 6         int a = 1, b = 2;

 7         int c;

 8         for (int i = 3; i <= n; i++) {

 9             c = a + b;

10             a = b;

11             b = c;

12         }

13         return c;

14     }

15 };

 第二遍。

1 class Solution {

2 public:

3     int climbStairs(int n) {

4         vector<int> dp(3, 1);

5         for (int i = 2; i <= n; ++i)

6             dp[i % 3] = dp[(i-1) % 3] + dp[(i-2) % 3];

7         return dp[n % 3];

8     }

9 };

 

你可能感兴趣的:(LeetCode)