`

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?

爬楼梯的问题,思路和Unique Paths问题类似。我们假设到了第i个台阶,因为每次只能走一步和两步,因此到第i个台阶的方式等于到第i-1个台阶的方式和到第i-2个台阶的方式的和,这时i > 1; 递推式为dp[i] = dp[i - 1] + dp[i - 2];实现代码如下:
public class Solution {
    public int climbStairs(int n) {
        if(n <= 0) return 0;
        if(n == 1) return 1;
        if(n == 2) return 2;
        int[] dp = new int[n];
        dp[0] = 1;
        dp[1] = 2;
        for(int i = 2; i < n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n - 1];
    }
}
分享到:
评论

相关推荐

    C++-leetcode题解之746. Min Cost Climbing Stairs.cpp

    c++ C++_leetcode题解之746. Min Cost Climbing Stairs.cpp

    codingquestion

    Carimus编码问题代码function climbingStairs(stairs: number) { if (stairs &lt;= 2) return stairs; return climbingStairs(stairs - 1) + climbingStairs(stairs - 2); } function climbingStairsDriver(stairs: ...

    c语言-leetcode题解之0070-climbing-stairs

    c语言入门 c语言_leetcode题解之0070_climbing_stairs

    js-leetcode题解之70-climbing-stairs.js

    javascript js_leetcode题解之70-climbing-stairs.js

    c语言-leetcode题解之0070-climbing-stairs.zip

    c c语言_leetcode题解之0070_climbing_stairs.zip

    C语言-leetcode题解之70-climbing-stairs.c

    c语言入门 C语言_leetcode题解之70-climbing-stairs.c

    leetcode走楼梯-Climbing-Stairs:力码练习

    《走楼梯问题——LeetCode中的Climbing Stairs》 在计算机科学和算法设计中,LeetCode是一个广受欢迎的在线平台,它提供了大量的编程题目,帮助开发者锻炼和提升编程技能。"走楼梯"(Climbing Stairs)是其中一道...

    3、动态规划必练题(含解法).pdf

    1. **Min Cost Climbing Stairs** (最小成本爬楼梯) 问题描述:有若干个台阶,每次可以爬1阶或2阶,求达到顶部的最小成本。这是一个典型的动态规划问题,状态转移方程为`dp[i] = min(dp[i-1], dp[i-2]) + cost[i]`...

    LeetCode:Leetcode-解决方案

    Min Cost Climbing Stairs [746]2. Best Time to Buy and Sell Stock [121]3. Climbing Stairs [70]4. Maximum Subarray [53]5. House Robber [198]6. Range Sum Query - Immutable [303]7. Counting Bits [338]8. ...

    c++-c++编程基础之leetcode题解第70题爬楼梯.zip

    本压缩包文件“c++-c++编程基础之leetcode题解第70题爬楼梯.zip”显然是针对LeetCode的第70题——"Climbing Stairs"(爬楼梯)的解决方案。这道题目属于动态规划问题,是C++初学者到进阶者常常会遇到的经典算法题。 ...

    春节7天练丨Day2:栈、队列和递归1

    1. **Climbing Stairs**:模拟爬楼梯问题,可以通过递归或动态规划解决,计算到达楼梯顶部的不同方式数量。 递归实现的常见示例有斐波那契数列和阶乘计算: - **斐波那契数列**:`f(n) = f(n-1) + f(n-2)`,递归...

    python数据结构与算法面试宝典1

    **1.5 爬楼梯 (Climbing Stairs)** 爬楼梯问题是一个经典的动态规划问题。假设每次可以爬1步或2步,求到达第n步的不同方法数。可以创建一个动态规划数组dp,其中dp[i]表示到达第i步的方法数。dp[i]可以通过dp[i-1]...

    javalruleetcode-learn-algorithms::laptop:Java实现的各种算法题解

    Stairs](./leetcode/动态规划-Climbing Stairs.java) [动态规划-Decode Ways](./leetcode/动态规划-Decode Ways.java) [动态规划-Distinct Subsequences](./leetcode/动态规划-Distinct Subsequences.java) [动态...

    LeetCodeAgri.zip

    4. **动态规划**:动态规划是一种用于求解最优化问题的策略,如"爬楼梯"(Climbing Stairs)和"最长连续序列"(Longest Consecutive Sequence)。通过构建状态转移方程,我们可以用递归或迭代的方式求解问题。 5. *...

    费波拉契算法demo

    6. **ClimbingStairs.java**:这个文件名可能代表一个与斐波那契数列相关的问题,比如“爬楼梯”问题。在这个问题中,一个人要爬n阶楼梯,每次可以爬1阶或2阶,问有多少种不同的爬法。这个问题可以通过斐波那契数列...

    CleanCodeHandbook_v1.0.3

    - Climbing Stairs(爬楼梯) - Unique Paths(不同路径) 11. Binary Search(二分查找): 二分查找是一种在有序数组中查找特定元素的搜索算法。文件中出现的二分查找相关题目包括: - Search Insert Position...

    LeetCodeProject.zip

    12. 爬楼梯( Climbing Stairs):通过动态规划解决递推问题,可以采用记忆化搜索优化。 13. 罗马数字转整数(Roman to Integer):解析罗马数字,注意特殊规则的处理。 14. 最长公共前缀(Longest Common Prefix...

    leetcode官方50题算法详解

    1. **爬楼梯(Climbing Stairs)**:使用动态规划的思想,计算出爬楼梯的不同方法总数。 2. **不同路径(Unique Paths)**:给定一个机器人位于一个m x n网格的左上角,求出到达网格右下角的不同路径数量。 ### 二...

    java7hashmap源码-learning-record:学习轨迹记录

    Stairs).md](Java基础/数据结构与算法/LeetCode/LeetCode 70. 爬楼梯(Climbing Stairs).md) 7月3号 java 异常详解 7月2号 整理基础算法 7月1号 七月 6月30号 6月29号 6月25号 6月22号 Redis中String、List、Hash...

Global site tag (gtag.js) - Google Analytics