描述

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 阶

思路一:递归解法

题目分析:

  • 第1级台阶:1种方法(爬1级)
  • 第2级台阶:2中方法(爬1级或2级)
  • 第n级台阶:从第n-1级台阶爬1级或从第n-2级台阶爬2级
  • 递推公式:Fn=Fn-1+Fn-2
  • 这个就是一个斐波那契数列
  • 但是用递归的解法时间复杂度太高,超出时间限制了
class Solution {public:int climbStairs(int n) {int res;// vector<int> dp(n+1);if(n<=2) return n;return climbStairs(n-1)+climbStairs(n-2);}
};

思路二:动态规划

时间复杂度:O(n)
空间复杂度:O(n)

class Solution {public:int climbStairs(int n) {int res;if(n<=1){return n;}vector<int> dp(n+1); //定义空间确定下标i代表是n阶的结果//初始条件,0没有意义可以不看dp[1]=1;dp[2]=2;for(int i=3;i<=n;i++){dp[i]=dp[i-1]+dp[i-2];}return dp[n];}
};

动态规划优化

时间复杂度:O(n)
空间复杂度:O(1)

class Solution {public:int climbStairs(int n) {int res;if(n<=1){return n;}vector<int> dp(3); //定义空间确定下标i代表是n阶的结果//初始条件,0没有意义可以不看dp[1]=1;dp[2]=2;for(int i=3;i<=n;i++){int sum=dp[1]+dp[2];dp[1] = dp[2];dp[2] = sum; }return dp[2];}
};

LeetCode-基础动态规划-70. 爬楼梯相关推荐

  1. 学渣的刷题之旅 leetcode刷题 70.爬楼梯(动态规划)

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

  2. 【LeetCode笔记】70. 爬楼梯(Java、动态规划)

    文章目录 题目描述 代码 & 思路 1. 动态规划 O(n).O(n) 2. 动态规划 O(n).O(1) 题目描述 DP 入门题了属于是 代码 & 思路 1. 动态规划 O(n).O ...

  3. 小黑静待身边朋友的考研佳音,明天准备面试,在白塔咖啡帐篷里的一下午的leetcode之旅:70. 爬楼梯

    小黑代码:记忆化搜索 class Solution:def climbStairs(self, n: int) -> int:# 记忆字典map_ = {}# 递归搜索函数def dfs(res ...

  4. LeetCode 70. 爬楼梯 (递归斐波那契 | 动态规划)

    70. 爬楼梯 解法1 (暴力递归) 推出递推式子:f(n) = f(n - 1) + f(n - 2) 是一个斐波那契数列,用递归 class Solution {public int climbS ...

  5. 【力扣动态规划基础专题】:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62. 不同路径 63. 不同路径 II 343. 整数拆分 96. 不同的二叉搜索树

    /** 动态规划专题:这是最简单的并且已经给出了转移方程,平时我们用dp[]数组来表示转移方程转移方程: dp[n] = dp[n-1]+dp[n-2]初始值:dp[0] = 0 , dp[1] = ...

  6. LeetCode - 70. 爬楼梯(人肉递归、动态规划)2

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

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

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

  8. leetcode - 70. 爬楼梯

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

  9. 动态规划——斐波那契数列(70. 爬楼梯、198. 打家劫舍、213. 打家劫舍II、信件错排、母牛生产)

    递归和动态规划都是将原问题拆分成多个子问题然后求解,但是动态规划存储了子问题的解,不需要重复计算. 动态规划(Dynamic Programming,DP)需要转移方程和边界条件. 目录 一.70. ...

最新文章

  1. C语言 泛型链表的实现
  2. Swoole报错Failed to execute ‘send’ on ‘WebSocket’: Still in CONNECTING state. a
  3. python颜色填充代码_在python tu中用颜色填充形状
  4. 热释电传感器三个引脚_Adafruit的树莓派教程:热释电传感器感知运动
  5. 单片机检测220V交流电通断电路
  6. Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程
  7. java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码
  8. js获取时间(本周、本季度、本月..)
  9. 罗永浩今晚带货iPhone 12:价格将有惊喜!
  10. redmine-1.2.2安装服务(附图)
  11. C和指针 第十六章 标准函数库 本地跳转setjmp.h
  12. photoshop ps2022软件下载
  13. 那些通宵加班的年轻人
  14. 网络分析优化顶点覆盖Vertex Cover算法初探
  15. 服务器系统管理维护,服务器操作系统的管理维护
  16. 机器学习----PyTorch入门
  17. 异次元发卡系统源码荔枝发卡V3.0
  18. Linux开发工具--(编辑器,编译器,调试器)
  19. Java IO之:BufferedReader(超详细解析,使用方法说明)
  20. 3DMAX砖墙神器WallBuilder:快速生成常见砖墙插件教程

热门文章

  1. 2020年余丙森概率统计强化笔记-第五章 大数定律和中心极限定理 第六章 数理统计
  2. 《C和指针》读书笔记第一章快速上手
  3. 2019年上海市数学建模讲座(3)微分方程建模方法
  4. python中find函数忽略大小写_python字符串(大小写、判断、查找、分割、拼接、裁剪、替换、格式化)...
  5. android 关闭多点触控_Cocos Creator关闭多点触摸的问题
  6. redis linux 文件位置,Linux下Redis的安装和部署
  7. python扩展包安装_python怎么安装扩展包
  8. android点击视频使用固定应用打开,Android 使用intent打开手机自带应用播放视频,音频,文档,还有打开应用市场...
  9. 82. Leetcode 23. 合并K个升序链表 (排序)
  10. Leetcode 876. 链表的中间结点 (每日一题 20210918)