美文网首页
算法-爬楼梯

算法-爬楼梯

作者: 一笑轮回吧 | 来源:发表于2020-07-28 11:30 被阅读0次

如果爬楼梯需要 n 阶你才能到达楼顶。( n 是一个正整数)
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
例 1:n=2
解释: 有两种方法可以爬到楼顶。
第一种: 1 阶 + 1 阶
第二种: 2 阶

例 2:n=3
解释: 有三种方法可以爬到楼顶。
第一种:1 阶 + 1 阶 + 1 阶
第二种:1 阶 + 2 阶
第三种:2 阶 + 1 阶

所以我们用f(x)表示爬到第x 级台阶的方案数
f(x)=f(x−1)+f(x−2)

/**
 * 循环-实现
 * 复杂度分析
 * 时间复杂度:循环执行n 次,每次花费常数的时间代价,故渐进时间复杂度为O(n)
 * 空间复杂度:这里只用了常数个变量作为辅助空间,故渐进空间复杂度为O(1)
 *
 * @param n
 * @return
 */
private static int climbStairsDG(int n) {
    int o, p = 0, q = 1;
    for (int i = 1; i <= n; i++) {
        o = p;
        p = q;
        q = o + p;
    }
    return q;
}


/**
 * 递归-实现
 *
 * @param n
 * @return
 */
public static int climbStairs(int n) {
    if (n == 1) {
        return 1;
    }
    if (n == 2) {
        return 2;
    }
    return climbStairs(n - 1) + climbStairs(n - 2);
}

相关文章

  • 第20章 动态规划入门

    1、蒜头君爬楼梯(一) 算法分析 时间复杂度 Java 代码 2、蒜头君爬楼梯(二) 算法分析 时间复杂度 Jav...

  • 算法-爬楼梯

    如果爬楼梯需要 n 阶你才能到达楼顶。( n 是一个正整数)每次你可以爬 1 或 2 个台阶。你有多少种不同的方法...

  • 算法—爬楼梯

    假设你正爬楼梯,需要n阶才能到顶楼。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到顶楼呢?(n 为...

  • 算法-爬楼梯问题

    一个N阶的楼梯,每次能1或着2阶,问走n阶的楼梯有多少种走法? 分析可知在走第n阶的时候,是与第n-1阶和n-2阶...

  • 算法:爬楼梯 - Swift

    题目:你正在爬楼梯。需要 n 步你才能到达顶部。每次你可以爬 1 或 2 个台阶。你有多少种不同的方式可以爬到楼顶...

  • 经典爬楼梯算法

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

  • 递归算法之-爬楼梯

    一、爬楼梯算法递归实现:假设一个楼梯有N阶台阶,人每次最多跨M阶,求总共的爬楼梯的方案数例如:1-100的台阶,每...

  • LeetCode刷题-爬楼梯

    前言说明 算法学习,日常刷题记录。 题目连接 爬楼梯[https://leetcode-cn.com/proble...

  • 2022-05-19

    算法 进行中的学习计划:动态规划 力扣题:70. 爬楼梯[https://leetcode.cn/problems...

  • 【算法】爬楼梯(JavaScript实现)

    有一个楼梯,你一次只能往上走一阶或者两阶。请编写函数 climbStairs,它接受一个整数 n 作为参数,表示这...

网友评论

      本文标题:算法-爬楼梯

      本文链接:https://www.haomeiwen.com/subject/iqcfrktx.html