算法:动态规划解决爬楼梯Climbing Stairs python3
题目
70. Climbing Stairs
You are climbing a staircase. It takes n steps to reach the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
Example 1:
Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
Example 2:
Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step
动态规划解法
假设下一步就达到N,那么前一步要么是f(n-1), 或者是f(n-2)。因为可以选择一步,或者两步到达终点。这就产生了递推公式 f(n) = f(n-1) + f(n-2)
, 其中f(1)=1
, f(2)=2
. 也就是两种走法之和。结果就是res[n]
.
class ClimbingStairs:def climbStairsWithDP(self, n: int) -> int:if n == 1:return 1if n == 2:return 2res = [0] * (n + 1)res[1] = 1res[2] = 2for i in range(3, n+1):res[i] = res[i - 1] + res[i -2]return res[n]
斐波那系数解法
因为中间结果都不需要存储,那么直接用两个变量存储前两个值就好。
class ClimbingStairs:def climbStairs(self, n: int) -> int:c1 = 1if n == 1:return 1c2 = 2for i in range(3, n+1):c1, c2 = c2, c1 + c2return c2
算法:动态规划解决爬楼梯Climbing Stairs python3相关推荐
- 爬楼梯 · Climbing Stairs
[抄题]: 假设你正在爬楼梯,需要n步你才能到达顶部.但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? [思维问题]: 不知道一步.两步怎么加.还是用iteration迭代.此题公式可被 ...
- [Swift]LeetCode70. 爬楼梯 | Climbing Stairs
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- LeetCode 70. 爬楼梯(Climbing Stairs)
递归解法(超时): class Solution { public:int climbStairs(int n) {if(n == 1) return 1;if(n == 2) return 2;re ...
- 10.2 动态规划算法套路及空间优化 —— Climbing Stairs Unique Paths
这一篇文章从最简单的动态规划题目开始,结合上一节动态规划三要素,以LeetCode两道基础的DP题目阐述DP问题的基本套路解法. 70. Climbing Stairs You are climbin ...
- LeetCode-基础动态规划-70. 爬楼梯
描述 70.爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出 ...
- 动态规划基础——爬楼梯(Leetcode 70)
题目选自Leetcode 70.爬楼梯 动态规划的基础题,类似斐波那契数列一样的一维dp 状态转移方程为: dp[i] = dp[i-1] + dp[i-2]; 题目描述: 解题代码: int cli ...
- 动态规划LeetCode70爬楼梯
题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 方法一: 1 class Solut ...
- 【动态规划】爬楼梯爬的不仅仅是楼梯
深度思考爬楼梯问题,抽取一般过程,目标是对其变式题也能认出并且求解 一.题目描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? ...
- 程序设计与算法----递归之爬楼梯问题
爬楼梯 树老师爬楼梯,它可以每次走1级或者2级,输入楼梯的级数,求不同的走法数 例如:楼梯一共有3级,它可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共有3种走 ...
- 一步一步写算法(之爬楼梯)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前两天上网的时候看到一个特别有意思的题目,在这里和朋友们分享一下: 有一个人准备开始爬楼梯,假 ...
最新文章
- ivy java_使用Ivy管理项目中的依赖
- java derby 用户安全_Java 7u51安全权限变化,运行derby server被拒,解决方法
- 商城app实现注册送红包
- euv光刻机有什么用_台积电又买了13台EUV光刻机?
- 画箱线图_箱线图的N种画法
- java bean的反射类_JAVA中反射机制五(JavaBean的内省与BeanUtils库)
- 云顶之弈小程序 置顶工具(附源码)
- Android 加密解密
- 读《编程珠玑》 (四)
- java入门第二季--封装--java中的this
- Java中变量的初始化以及变量的初始化顺序,已经加入个人的简单理解
- OneNote 使用汇总
- 医院患者随访管理系统
- 【2022/1/12】think-swoole使用教程
- 蒙特卡洛python求解派_用蒙特卡洛方法计算派-python和R语言
- Linux:写一个简单的shell求和脚本并运行
- 基于前端Js模块化规范的粗浅应用
- 某视频播放公司笔试 2013
- c语言程序设计课程作用,《C语言程序设计》课程标准
- android撕衣服应用介绍,Android开发基础面试题
热门文章
- springboot如何快速访问templates下的html
- 点击控件动态创建新页面
- C#读写日志文本文件
- ××× L2TP over IPSec 配置
- bzoj3550: [ONTAK2010]Vacation(单纯形法+线性规划)
- 秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八)
- Mysql + keepalived 实现双主热备读写分离
- [Linux] ubuntu 安装 Wireshark
- 技术开发人员需要改变性格吗?
- mysql分区唯一索引_[项目踩坑] MySQL 分区:分区键和唯一索引主键的关系,解决报错 A PRIMARY KEY...