LeetCode题解 => 70.爬楼梯

题目

一、LeetCode题解

瞧一瞧~

二、算法题

题目

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1 阶 + 1 阶
2.  2 阶

示例 2:

输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
4.  1 阶 + 1 阶 + 1 阶
5.  1 阶 + 2 阶
6.  2 阶 + 1 阶

解法一 (递归)

代码

var climbStairs = function(n) {
    newClimbStairs(0, n);
};
var newClimbStairs = function(i, n){
    if (i > n) {
        return 0;
    }
    if (i == n) {
        return 1;
    }
    return newClimbStairs(i+1, n) + newClimbStairs(i+2, n)
}

结果

他可以得到正确的结果,但是时间复杂度太高,很容易就会超时

解法二(动态规划)

代码
var climbStairs = function(n) {
    if (n == 1) {
        return 1;
    }
    var arr = []
    arr[1] = 1
    arr[2] = 2
    for (let i = 3; i <= n; i++) {
        arr[i] = arr[i - 1] + arr[i - 2];
    }
    return arr[n];
}
结果

在这里插入图片描述

发布了292 篇原创文章 · 获赞 48 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/jbj6568839z/article/details/105710483