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.趣味拓展答案

防止鸡蛋摔碎~


相关文章
|
7月前
leetcode-70:爬楼梯
leetcode-70:爬楼梯
49 0
leetcode:70. 爬楼梯
此题运用递归思想。当只有1个台阶,那么只有1种方法爬到楼顶——跨一个台阶;当有2个台阶时,有2种方法爬到楼顶——跨一个台阶跨两次或直接跨两个台阶。当有3个台阶或更多台阶时,则可以选择先跨一个台阶还是先跨两个台阶,剩下的台阶再进行选择是先跨一个台阶还是先跨两个台阶……从而实现递归
42 0
|
缓存 Java Python
leetcode.70:爬楼梯
leetcode.70:爬楼梯
72 0
爬楼梯(动态规划)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
69 0
爬楼梯(LeetCode-70)
爬楼梯(LeetCode-70)
101 0
|
算法
LeetCode-70. 爬楼梯 (day16)
LeetCode-70. 爬楼梯 (day16)
118 0