Leetcode 70: 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?

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

 1 public class Solution {
 2     public int ClimbStairs(int n) {
 3         if (n == 1) return 1;
 4         if (n == 2) return 2;
 5         
 6         int dp1 = 1, dp2 = 2, dpn = 0;
 7         
 8         for (int i = 3; i <= n; i++)
 9         {
10             dpn = dp1 + dp2;
11             dp1 = dp2;
12             dp2 = dpn;
13         }
14         
15         return dpn;
16     }
17 }

 

posted @ 2017-11-10 11:08  逸朵  阅读(96)  评论(0)    收藏  举报