LeetCode-基础动态规划-70. 爬楼梯
描述
70.爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
- 1 阶 + 1 阶
- 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
- 1 阶 + 1 阶 + 1 阶
- 1 阶 + 2 阶
- 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. 爬楼梯相关推荐
- 学渣的刷题之旅 leetcode刷题 70.爬楼梯(动态规划)
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 输入: 2 输出: 2 解释: 有两种方法可以爬 ...
- 【LeetCode笔记】70. 爬楼梯(Java、动态规划)
文章目录 题目描述 代码 & 思路 1. 动态规划 O(n).O(n) 2. 动态规划 O(n).O(1) 题目描述 DP 入门题了属于是 代码 & 思路 1. 动态规划 O(n).O ...
- 小黑静待身边朋友的考研佳音,明天准备面试,在白塔咖啡帐篷里的一下午的leetcode之旅:70. 爬楼梯
小黑代码:记忆化搜索 class Solution:def climbStairs(self, n: int) -> int:# 记忆字典map_ = {}# 递归搜索函数def dfs(res ...
- LeetCode 70. 爬楼梯 (递归斐波那契 | 动态规划)
70. 爬楼梯 解法1 (暴力递归) 推出递推式子:f(n) = f(n - 1) + f(n - 2) 是一个斐波那契数列,用递归 class Solution {public int climbS ...
- 【力扣动态规划基础专题】:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62. 不同路径 63. 不同路径 II 343. 整数拆分 96. 不同的二叉搜索树
/** 动态规划专题:这是最简单的并且已经给出了转移方程,平时我们用dp[]数组来表示转移方程转移方程: dp[n] = dp[n-1]+dp[n-2]初始值:dp[0] = 0 , dp[1] = ...
- LeetCode - 70. 爬楼梯(人肉递归、动态规划)2
70 . 爬楼梯 题目: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 ...
- LeetCode 70爬楼梯71简化路径72编辑距离(dp)
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...
- leetcode - 70. 爬楼梯
70. 爬楼梯 -------------------------------------- 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以 ...
- 动态规划——斐波那契数列(70. 爬楼梯、198. 打家劫舍、213. 打家劫舍II、信件错排、母牛生产)
递归和动态规划都是将原问题拆分成多个子问题然后求解,但是动态规划存储了子问题的解,不需要重复计算. 动态规划(Dynamic Programming,DP)需要转移方程和边界条件. 目录 一.70. ...
最新文章
- C语言 泛型链表的实现
- Swoole报错Failed to execute ‘send’ on ‘WebSocket’: Still in CONNECTING state. a
- python颜色填充代码_在python tu中用颜色填充形状
- 热释电传感器三个引脚_Adafruit的树莓派教程:热释电传感器感知运动
- 单片机检测220V交流电通断电路
- Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程
- java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码
- js获取时间(本周、本季度、本月..)
- 罗永浩今晚带货iPhone 12:价格将有惊喜!
- redmine-1.2.2安装服务(附图)
- C和指针 第十六章 标准函数库 本地跳转setjmp.h
- photoshop ps2022软件下载
- 那些通宵加班的年轻人
- 网络分析优化顶点覆盖Vertex Cover算法初探
- 服务器系统管理维护,服务器操作系统的管理维护
- 机器学习----PyTorch入门
- 异次元发卡系统源码荔枝发卡V3.0
- Linux开发工具--(编辑器,编译器,调试器)
- Java IO之:BufferedReader(超详细解析,使用方法说明)
- 3DMAX砖墙神器WallBuilder:快速生成常见砖墙插件教程
热门文章
- 2020年余丙森概率统计强化笔记-第五章 大数定律和中心极限定理 第六章 数理统计
- 《C和指针》读书笔记第一章快速上手
- 2019年上海市数学建模讲座(3)微分方程建模方法
- python中find函数忽略大小写_python字符串(大小写、判断、查找、分割、拼接、裁剪、替换、格式化)...
- android 关闭多点触控_Cocos Creator关闭多点触摸的问题
- redis linux 文件位置,Linux下Redis的安装和部署
- python扩展包安装_python怎么安装扩展包
- android点击视频使用固定应用打开,Android 使用intent打开手机自带应用播放视频,音频,文档,还有打开应用市场...
- 82. Leetcode 23. 合并K个升序链表 (排序)
- Leetcode 876. 链表的中间结点 (每日一题 20210918)