LeedCode_03-爬楼梯(70)

简介: LeedCode_03-爬楼梯(70)

趣味拓展:

为什么全世界的母鸡都是短腿?


(答案在文末)


爬楼梯(LeedCode_第70题)

1.题目描述

示例 1:

输入:n = 2

输出:2

解释:有两种方法可以爬到楼顶。

1. 1 阶 + 1 阶

2. 2 阶

示例 2:

输入:n = 3

输出:3

解释:有三种方法可以爬到楼顶。

1. 1 阶 + 1 阶 + 1 阶

2. 1 阶 + 2 阶

3. 2 阶 + 1 阶

提示:

1 <= n <= 45

通过次数:

1M

提交次数:

1.9M

通过率:

54.0%


2.输入描述


3.代码实现

如果n==1,显然只有从0->1一种方法:f(1)=1;
如果n==2,那么有0->1->2、0->2两种方:f(2)=2;
如果n==3,那么可以先爬到第1阶,然后爬两个台阶,
或者先爬到第二阶,然后爬一个台阶,显然f(3)=f(2)+f(1);
以此类推
对于n>=3个台阶,可以先爬到第n-1个台阶,
然后再爬一个台阶,或者先爬到n-2个台阶,然后爬2个台阶,
因此我们可以找出规律:f(n)=f(n-1)+f(n-2)。
class Solution {
    private Map<Integer,Integer> store=new HashMap<>();
    public int climbStairs(int n) {
        if (n==1){
            return 1;
        }
        if (n==2){
            return 2;
        }
        if (null!=store.get(n)){
            return store.get(n);
        }
        else{
            int result=climbStairs(n-1)+climbStairs(n-2);
            store.put(n,result);
            return result;
        }
}
}


4.拓展

自己先尝试,树立基本思想,之后再借鉴别人代码,更能受益


5.趣味拓展答案

防止鸡蛋摔碎~


相关文章
【剑指offer】-跳台阶-08/67
【剑指offer】-跳台阶-08/67
|
1月前
LeetCode爬楼梯
解决LeetCode上“爬楼梯”问题的动态规划方法,其中每次可以爬1或2个台阶,目标是计算到达楼顶的不同方法数。
27 0
|
3月前
|
算法 Java
LeetCode第70题爬楼梯
这篇文章是关于LeetCode第70题"爬楼梯"的解题分享。作者首先分析了题目,指出这是一个简单的问题,并且可以通过观察发现爬楼梯的规律:到达第n层楼梯的走法数等于到达第n-1层和第n-2层楼梯的走法数之和。接着,作者提供了一个Java语言的代码实现,使用了迭代的方式来计算爬楼梯的走法数。最后,作者总结了动态规划思想在解决这类问题时的应用,强调了通过观察问题找出规律的重要性。
LeetCode第70题爬楼梯
LeedCode_04-斐波那契数列(剑指offer-10)
LeedCode_04-斐波那契数列(剑指offer-10)
|
6月前
蓝桥备战--分糖果OJ2928 贪心 分类讨论
蓝桥备战--分糖果OJ2928 贪心 分类讨论
65 0
|
6月前
leetcode-70:爬楼梯
leetcode-70:爬楼梯
48 0
leetcode:70. 爬楼梯
此题运用递归思想。当只有1个台阶,那么只有1种方法爬到楼顶——跨一个台阶;当有2个台阶时,有2种方法爬到楼顶——跨一个台阶跨两次或直接跨两个台阶。当有3个台阶或更多台阶时,则可以选择先跨一个台阶还是先跨两个台阶,剩下的台阶再进行选择是先跨一个台阶还是先跨两个台阶……从而实现递归
39 0
【leedcode】0005. 最长回文子串
【leedcode】0005. 最长回文子串
44 0
31.跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
81 0