LeetCode-70-爬楼梯

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

题目链接:LeetCode-70-爬楼梯

解题思路:注释中有详解

代码实现:

class Solution {
    
    
    public int climbStairs(int n) {
    
    
        // 动规五部曲
        // 1. dp[i]: 走到第 i 阶有dp[i]种方法
        // 2. 递归公式:dp[i]=dp[i-1]+dp[i-2]  走到第3阶需要依赖第1个台阶走1步,第2个台阶走1步,和斐波那契数列一样
        // 3. 初始化:dp[0]=0; dp[1]=1 ; dp[2]=2
        // 4. 从前向后

        if (n==1){
    
    
            return 1;
        }
        if (n==2){
    
    
            return 2;
        }
        // 初始化
        int[] dp = new int[n+1];
        dp[0]=1;
        dp[1]=1;
        dp[2]=2;
        for (int i = 3; i <=n ; i++) {
    
    
            dp[i] = dp[i-1] + dp[i-2];
        }
        return dp[dp.length-1];
    }
}

猜你喜欢

转载自blog.csdn.net/Miss_croal/article/details/132854960