zoukankan      html  css  js  c++  java
  • 菜鸡学算法--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 阶

    作为一个菜鸡,看到题目直接懵逼,思路混乱。

    解题大招:

    首先,计算可执行的逻辑最后只可能是if else分支,或者是 for while循环 或者是递归。所以,解题的细节最终都会落到这上面,更多的还是循环或者递归,而循环或者递归就以为着有重复的逻辑存在,从这个想法切入。

    在懵逼的时候,首先向到是否可以暴力,显然这一题目不可以;然后就是看基本的情况如何解:

    当n=1时,只有1中走法

    当n=2时,有两种走法

    那当n=3时呢,一共3阶台阶,想走到第3阶台阶,要么从第2阶走一步上来,要么从1阶走2步上来,即:

    f(3)=f(1)+f(2)

    那么想走到第n阶台阶,要么从第n-1阶走一步上来,要么从n-2阶走2步上来,即n-1阶走的方法数加上n-2阶走的方法数:

    f(n)=f(n-1)+f(n-2)

    这个公式就非常熟悉了,斐波拉契数列公式那么题解就来了:

     1 private static int ClimbStair(int n)
     2         {
     3             if (n <=2)
     4             {
     5                 return n;
     6             }
     7             int res = 0, dp1 = 1, dp2 = 2;
     8             for (int i = 3; i <= n; i++)
     9             {
    10                 res = dp1 + dp2;
    11                 dp1 = dp2;
    12                 dp2 = res;
    13             }
    14             return res;
    15         }

    这一题是一个简单的动态规划问题,对动态规划的思想还不是很懂,这里呢也是做个记录,贴个动态规划思路分析:

    本问题其实常规解法可以分成多个子问题,爬第n阶楼梯的方法数量,等于 2 部分之和

    爬上 n-1n−1 阶楼梯的方法数量。因为再爬1阶就能到第n阶
    爬上 n-2n−2 阶楼梯的方法数量,因为再爬2阶就能到第n阶
    所以我们得到公式 dp[n] = dp[n-1] + dp[n-2]dp[n]=dp[n−1]+dp[n−2]
    同时需要初始化 dp[0]=1dp[0]=1 和 dp[1]=1dp[1]=1
    时间复杂度:O(n)O(n)

    题目来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/climbing-stairs
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    思路记录:

    作者:guanpengchn
    链接:https://leetcode-cn.com/problems/climbing-stairs/solution/hua-jie-suan-fa-70-pa-lou-ti-by-guanpengchn/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    Different AG groups have the exactly same group_id value if the group names are same and the ‘CLUSTER_TYPE = EXTERNAL/NONE’
    An example of polybase for Oracle
    use azure data studio to create external table for oracle
    Missing MSI and MSP files
    You may fail to backup log or restore log after TDE certification/key rotation.
    Password is required when adding a database to AG group if the database has a master key
    Use KTPASS instead of adden to configure mssql.keytab
    ardunio+舵机
    android webview 全屏100%显示图片
    glide 长方形图片显示圆角问题
  • 原文地址:https://www.cnblogs.com/c-supreme/p/12571155.html
Copyright © 2011-2022 走看看