signed

QiShunwang

“诚信为本、客户至上”

Leetcode70—— 爬楼梯

2021/4/26 21:14:49   来源:

文章目录

  • 题目
  • 递归(超时)
  • 动态规划(打表)

题目链接: 70. 爬楼梯

题目

70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

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

示例 1:

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

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

递归(超时)

//递归超时

class Solution {
    public int climbStairs(int n) {
        if(n == 0){
            return 1;
        }
        if(n == 1){
            return 1;
        }
        return climbStairs(n-1) + climbStairs(n-2);
    }
}

动态规划(打表)

//动态规划(打表)

class Solution {
    public int climbStairs(int n) {
        int []dp = new int[n + 1];
        dp[0] = 1;
        dp[1] = 1;
        return dabiao(n, dp);
    }
    public int dabiao(int n, int []memo) {
        memo[0] = 1;
        memo[1] = 1;
        for(int i = 2; i <= n; i++){
            memo[i] = memo[i - 1] + memo[i - 2];
        }
        return memo[n];
    }
}