爬楼梯

难度:简单

描述:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
**注意:**给定 n 是一个正整数。

示例:

示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1+ 12.  2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1.  1+ 1+ 12.  1+ 23.  2+ 1
1
2
3
4
5
6
7
8
9
10
11
12
13

思路分析:
利用动态规划
第 ii 阶可以由以下两种方法得到:

在第 (i-1)(i−1) 阶后向上爬一阶。

在第 (i-2)(i−2) 阶后向上爬 22 阶。

所以到达第 ii 阶的方法总数就是到第 (i-1)(i−1) 阶和第 (i-2)(i−2) 阶的方法数之和。

令 dp[i]dp[i] 表示能到达第 ii 阶的方法总数:

dp[i]=dp[i-1]+dp[i-2]

代码实现:

var climbStairs = function(n) {
            if (n <= 2) {
                return n
            }
            let num1 = 1;
            let num2 = 2;
            let Num = 0;
            for (let i = 2; i < n; i++) {
                numN = num1 + num2;
                num1 = num2;
                num2 = numN;
            }
            return numN;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
最后更新时间: 10/16/2019, 8:47:58 PM