题目

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相关推荐

  1. 爬楼梯 · Climbing Stairs

    [抄题]: 假设你正在爬楼梯,需要n步你才能到达顶部.但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? [思维问题]: 不知道一步.两步怎么加.还是用iteration迭代.此题公式可被 ...

  2. [Swift]LeetCode70. 爬楼梯 | Climbing Stairs

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  3. LeetCode 70. 爬楼梯(Climbing Stairs)

    递归解法(超时): class Solution { public:int climbStairs(int n) {if(n == 1) return 1;if(n == 2) return 2;re ...

  4. 10.2 动态规划算法套路及空间优化 —— Climbing Stairs Unique Paths

    这一篇文章从最简单的动态规划题目开始,结合上一节动态规划三要素,以LeetCode两道基础的DP题目阐述DP问题的基本套路解法. 70. Climbing Stairs You are climbin ...

  5. LeetCode-基础动态规划-70. 爬楼梯

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

  6. 动态规划基础——爬楼梯(Leetcode 70)

    题目选自Leetcode 70.爬楼梯 动态规划的基础题,类似斐波那契数列一样的一维dp 状态转移方程为: dp[i] = dp[i-1] + dp[i-2]; 题目描述: 解题代码: int cli ...

  7. 动态规划LeetCode70爬楼梯

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

  8. 【动态规划】爬楼梯爬的不仅仅是楼梯

    深度思考爬楼梯问题,抽取一般过程,目标是对其变式题也能认出并且求解 一.题目描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? ...

  9. 程序设计与算法----递归之爬楼梯问题

    爬楼梯 树老师爬楼梯,它可以每次走1级或者2级,输入楼梯的级数,求不同的走法数 例如:楼梯一共有3级,它可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共有3种走 ...

  10. 一步一步写算法(之爬楼梯)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前两天上网的时候看到一个特别有意思的题目,在这里和朋友们分享一下: 有一个人准备开始爬楼梯,假 ...

最新文章

  1. ivy java_使用Ivy管理项目中的依赖
  2. java derby 用户安全_Java 7u51安全权限变化,运行derby server被拒,解决方法
  3. 商城app实现注册送红包
  4. euv光刻机有什么用_台积电又买了13台EUV光刻机?
  5. 画箱线图_箱线图的N种画法
  6. java bean的反射类_JAVA中反射机制五(JavaBean的内省与BeanUtils库)
  7. 云顶之弈小程序 置顶工具(附源码)
  8. Android 加密解密
  9. 读《编程珠玑》 (四)
  10. java入门第二季--封装--java中的this
  11. Java中变量的初始化以及变量的初始化顺序,已经加入个人的简单理解
  12. OneNote 使用汇总
  13. 医院患者随访管理系统
  14. 【2022/1/12】think-swoole使用教程
  15. 蒙特卡洛python求解派_用蒙特卡洛方法计算派-python和R语言
  16. Linux:写一个简单的shell求和脚本并运行
  17. 基于前端Js模块化规范的粗浅应用
  18. 某视频播放公司笔试 2013
  19. c语言程序设计课程作用,《C语言程序设计》课程标准
  20. android撕衣服应用介绍,Android开发基础面试题

热门文章

  1. springboot如何快速访问templates下的html
  2. 点击控件动态创建新页面
  3. C#读写日志文本文件
  4. ××× L2TP over IPSec 配置
  5. bzoj3550: [ONTAK2010]Vacation(单纯形法+线性规划)
  6. 秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八)
  7. Mysql + keepalived 实现双主热备读写分离
  8. [Linux] ubuntu 安装 Wireshark
  9. 技术开发人员需要改变性格吗?
  10. mysql分区唯一索引_[项目踩坑] MySQL 分区:分区键和唯一索引主键的关系,解决报错 A PRIMARY KEY...