70. 爬楼梯

解法1 (暴力递归)
  • 推出递推式子:f(n) = f(n - 1) + f(n - 2)
  • 是一个斐波那契数列,用递归
class Solution {public int climbStairs(int n) {if (n == 1) return 1;if (n == 2) return 2;return climbStairs(n - 1) + climbStairs(n - 2);}
}
解法2 (记忆化递归)
class Solution {public int climbStairs(int n) {int[] memo = new int[n + 1];return climbStairsMemo(n, memo);}public int climbStairsMemo(int n, int[] memo) {if (memo[n] > 0) {return memo[n];}if (n == 1) {memo[n] = 1;} else if (n == 2) {memo[n] = 2;} else {memo[n] = climbStairsMemo(n - 1, memo) + climbStairsMemo(n - 2, memo);}return memo[n];}
}
解法3 (递归改循环)
class Solution {public int climbStairs(int n) {if (n == 1) return 1;if (n == 2) return 2;int x1 = 1, x2 = 2;int x3 = 0;for (int i = 3; i <= n; i++) {x3 = x1 + x2;x1 = x2;x2 = x3;}return x3;}
}
解法4 (动态规划)
public class Solution {public int climbStairs(int n) {if (n == 1) {return 1;}int[] dp = new int[n + 1];dp[1] = 1;dp[2] = 2;for (int i = 3; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
}

LeetCode 70. 爬楼梯 (递归斐波那契 | 动态规划)相关推荐

  1. 70. 爬楼梯 golang 斐波那契数列

    题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: ...

  2. 用C语言写爬楼梯(斐波那契数列的应用,迭代与递归)爬楼梯问题超详细,看完这一篇就够了。

    爬楼梯问题实际上就是斐波那契数列的应用,首先我们讲讲什么是斐波那契数列.因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列" ...

  3. 力扣一日一练(7)——爬楼梯(斐波那契数列)

    题目:爬楼梯(斐波那契数列) 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例: 示例 1: ...

  4. python侯先生爬楼梯_经典算法题:爬楼梯 ,以斐波那契数列来解题代码案例

    网上这题的解题思路主要有两种:动态规划 斐波那契数列 因为我们用斐波那契数列来解,所以我主要描述方法2. 斐波那契数列 又称 兔子数列, 指得是:1.1.2.3.5.8.13.21.--, 在数学上它 ...

  5. python leetcode 爬楼梯问题 斐波那契数列

    爬楼梯 问题描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: ...

  6. [LeetCode-70]-Climbing Stairs(爬楼梯,斐波那契数列问题)

    文章目录 题目相关 Solution 题目相关 [题目解读] 该题就是斐波那契数列问题,可以使用递归方法实现. [原题描述]原题链接 You are climbing a stair case. It ...

  7. LeetCode 70爬楼梯71简化路径72编辑距离(dp)

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...

  8. Python描述 LeetCode 70. 爬楼梯

    Python描述 LeetCode 70. 爬楼梯   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术博文,主要包括前端开发.pyt ...

  9. python函数递归 斐波那契数列

    4.7 python函数递归 斐波那契数列 代码:(利用递归.format输出等) def fibonacci(n):if n==1 or n==2:f=1else:f=fibonacci(n-1)+ ...

最新文章

  1. centos 6安装 vim
  2. hdfs 创建用户和用户组_hadoop四:linux用户和组命令
  3. Linux基础命令---文本过滤colrm
  4. AD转换实验 编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则
  5. 凡人和神学习和使用软件的七个层次
  6. Android Studio来了,它能取代Eclipse吗?
  7. 有道云笔记语音速记功能体验:让你在移动办公中解放双手
  8. python3打包app_python3打包脚本
  9. Solr4.8.0源码分析(13)之LuceneCore的索引修复
  10. ht1621b和单片机电平匹配_干货 | 143条 超详细整理STM32单片机学习笔记
  11. 手机安装证书时候弹出输入证书密码
  12. 锐炬显卡和独立显卡有什么不同?
  13. poj3580:SuperMemo(块状链表/Splay)
  14. xxl-job通过代码的方式动态添加任务,修改任务,执行任务,停止任务等
  15. c语言入门自学mobi,算法精解:C语言描述[AZW3][EPUB][MOBI][23.00MB]
  16. phalcon mysql_Phalcon 数据库操作总结
  17. 原型模式与深拷贝浅拷贝
  18. 揭秘 Cortex-A55,为何它是对未来数字世界举足轻重的处理器?
  19. c语言基础:getchar()
  20. php 跳转qq群代码_Q群自动签到php+java实现

热门文章

  1. 117. Populating Next Right Pointers in Each Node II 计算右边的附属节点
  2. Python代码之三级登录
  3. 前台页面优化全攻略(二)
  4. (设计模式之一)浅析简单工厂模式
  5. [HTML5_资源]给网页设计师的30个HTML5学习资源
  6. Android源码中添加 修改应用
  7. [转]DotNet C#开源资源汇总
  8. cpu核心电压:不一定是1.55伏特 : 全体到齐!200 mhz fsb的p4处理器与i875p双通道ddr400芯片组...
  9. 【Java从0到架构师】Redis 进阶 - 持久化(RBD、AOF)、高可用(主从复制、哨兵机制、Cluster)
  10. 【PyQt5】PyQt5 安装 以及使用 designer 开发 python GUI 界面