Leetcode算法——70、爬楼梯(climbing stairs)

LeetCode 70:爬楼梯|递归到动态规划全路径解析 通过 LeetCode 第 70 题“Climbing Stairs”,我们完整经历了从暴力递归到记忆化搜索,再到动态规划及空间优化的整个算法进阶路径。这道看似简单的题目,实际上蕴含了递归思想、状态转移、子问题重叠、空间压缩等一系列动态规划核心理念。掌握它,不仅有助于建立解决问题的框架思维,也为今后应对更复杂的 DP 问题打下基础。推荐进一步挑战的题目:LeetCode 198. 打家劫舍(带状态转移)LeetCode 746. 使用最小花费爬楼梯(与本题模型相近) 阅读详情

你正在爬楼梯,共有 n 层台阶。

每次可以爬 1 层或 2 层。

问有多少种不重复的方法可以从楼梯底爬到楼梯顶。

示例:

Example 1:
Input: 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps

Example 2:
Input: 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层台阶,可以根据第一步的层数,将所有爬法分为两类:

  • 第一步爬1层,然后继续爬剩下的n-1层
  • 第一步爬2层,然后继续爬剩下的n-2层

这两种方法是互斥且完备的。

因此,n层的爬法 = (n-1) 层的爬法 + (n-2) 层的爬法。

即斐波那契数列。

python实现

def climbStairs(n):
    """
    :type n: int
    :rtype: int
    """
    a, b = 1, 1
    for i in range(n):
        a, b = b, a+b
    return a

if '__main__' == __name__:
    n = 3
    print(climbStairs(n))
``
Vue和Vue-Element-Admin(六):集成中的CORS(跨域资源共享)问题 在vue-element-admin登录集成时候碰到跨域资源共享问题,CORS(Cross-origin resource sharing)是浏览器的技术规范,浏览器可以发起跨域请求但Javascript脚本不能,传统的ajax只能获取在同域名下的资源,但Html5允许ajax发起跨域请求,解决方案有:JSONP、Flash、IFrame、CORS。 一、CORS(跨域资源共享)问题 针对vue-element-admin的登录模块的后端接口完成后,前端调用时候出现报错,因为前端的端口是9527而后. 阅读详情

相关推荐

基于LangGraph的智能报告生成平台项目分析

不知道你是否知道或者了解OpenAI and Gemini Deep Research。他们是一种能够根据输入问题进行规划、结合网络搜索获取信息并最终呈现结果的研究工具或技术。那这样research是如何实现的呢?最近刚好看到一个实现类似功能的开源项目: open_deep_search。本文将基于该项目进行代码层面剖析。

u011160113的博客 923

Java学习手册:(数据结构与算法-递归)一个人爬楼梯,可以一次爬一阶或者两阶,问n层楼梯有多少种爬法?

算法思想: (1)只有一层楼梯,有1种方法,即 f(1) = 1; (2)有两层楼梯,有2种方法,即 f(2) = 2; (3)有三层楼梯,a、如果第一步爬一层,后面还有两层楼梯未爬,有2种方法,即f(2);b、如果第一步爬两层,后面还有一层未爬,有一种方法,即f(1);因此,总共有3种方法,即f(3) = f(2) + f(1) = 3; (4)有四层楼梯,a、如果第一层爬一层,后面还有...

浩比的专栏 3116

Nettrace 源码分析

文章介绍:本文将围绕腾讯开源项目nettrace工具中数据采集,数据处理,数据分析三个模块深入源码分析其实现细节

abobob的博客 989

算法:Climbing Stairs(爬楼梯) 6种解法

说明 算法:Climbing Stairs(爬楼梯) LeetCode地址:https://leetcode.com/problems/climbing-stairs/ 题目: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 step...

AI架构师易筋 1万+

图片边界矢量化-地理配准

无地理和投影信息的JPG图片,通过ArcGIS进行地理配准(Georeferencing)完成数字化边界。

u012727861的博客 1907

【BLE系列-第六篇】GATT解析:属性、特征、描述符的逻辑关系

本文系统介绍了BLE协议中的ATT和GATT机制。ATT以"属性"为基本数据单元,包含UUID、Handle、权限和Value四个要素。GATT则在ATT基础上构建了服务、特征和描述符的层次结构:服务(UUID:0x2800/0x2801)通过声明属性标识,特征声明(UUID:0x2803)指向特征值(UUID:0x2Axx或自定义),描述符(UUID:0x2900~0x290F)提供附加信息。GATT复用ATT发现机制,通过定义特定UUID语义实现服务发现和特征管理。这种设计使BLE设

qq_43399763的博客 1929

算法 - 上楼梯(跳台阶)

楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,走完n阶台阶共有多少种不同的走法? 假设n阶台阶有f(n)种走法,第1步有2种走法 如果上1阶,那就还剩n - 1阶,共f(n - 1)种走法 如果上2阶,那就还剩n - 2阶,共f(n - 2)种走法 所以f(n) = f(n - 1) + f(n - 2) int climbStairs(int n) { if (n ...

宋卓的博客 4740

第一章 DRM 子系统概述:1.2 专栏定位与技术覆盖范围

本专栏系统解析Linux内核DRM图形子系统的核心技术,涵盖GEM对象管理、TTM内存机制、DRM-Fence同步等核心模块,深入剖析DMA-BUF共享、DMA_Resv资源管理等关键技术。通过解读内核源码与用户态接口(libdrm),结合进程管理、匿名inode等底层机制,构建完整的DRM知识体系。专栏兼顾深度与易懂性,辅以实际应用场景分析,既适合图形驱动开发新手入门,也可满足资深工程师进阶需求,帮助读者掌握从内核实现到应用开发的全栈知识。

图形/计算GPU的驱动与虚拟化技术分享园地 3028

每日算法-7 爬楼梯

爬楼梯(类斐波那契数列)题型,这里记录总结4种解法: 1. 递归法 2. 动态规划法 3. 矩阵法 4. 通项公式法

Millionmile的博客 5002

【中项】案例分析 | 答题技巧 | 备考 

对偏差原因的分析和对项目未来趋势的理解。如果偏差是由一次性事件或特殊原因引起的,那么这种偏差是非典型的,意味着未来的绩效将回归到预期的绩效水平。例如,如果项目初期的CPI小于1,原因是意外的自然灾害导致成本增加,那么这种偏差被认为是非典型的,因为它不太可能在未来重复发生。例如,如果项目初期的CPI小于1,且原因是低效的团队协作,那么这种偏差被认为是典型的,因为它可能在整个项目生命周期中持续存在。在实际应用中,项目经理通常会结合CPI、SPI和偏差趋势图等工具,综合分析偏差的性质,以制定合理的项目控制策略。

静谧、淡雅 1245

深入解析:AndroidManifest.xml 与 Qt 6.7.0 的整合

本文探讨了在Qt 6.7.0和CMake构建Android应用时,AndroidManifest.xml未被正确识别的问题。通过分析CMake配置错误、文件路径问题等可能原因,提出了在CMakeLists.txt中明确指定路径、确保目录结构正确等解决方案,并给出了示例项目演示。文章强调正确配置AndroidManifest.xml对获取权限和应用功能的重要性,为Qt开发者提供了实用的调试建议。

2501_90323865的博客 110

爬楼梯问题——三种方法(精简版)

方法一:动态规划 思路和算法 我们用f(x)f(x)f(x)表示爬到第 x 级台阶的方案数,考虑最后一步可能跨了一级台阶,也可能跨了两级台阶,所以我们可以列出如下式子: f(x)=f(x−1)+f(x−2))f(x)=f(x−1)+f(x−2))f(x)=f(x−1)+f(x−2)) 它意味着爬到第 x 级台阶的方案数是爬到第 x−1 级台阶的方案数和爬到第 x−2级台阶的方案数的和。很好理解,因为每次只能爬 1 级或 22级,所以 f(x)只能从 f(x−1)和 f(x−2)转移过来,而这里要统计方案总数

littlea2011的博客 1万+

RGB渐变颜色转换公式及例程

设Step=51,将RGB(255,0,0)颜色渐变为RGB(0,255,0),即RGB(255,0,0)经过51次颜色渐变转为RGB(0,255,0);设Step=51,将RGB(0,255,0)颜色渐变为RGB(0,0,255),即RGB(0,255,0)经过51次颜色渐变转为RGB(0,0,255);设Step=51,将RGB(0,0,255)颜色渐变为RGB(255,0,0),即RGB(0,0,255)经过51次颜色渐变转为RGB(255,0,0);分步骤的方式,使其渐变色循环整个颜色值;

1万+

每日一道算法题LeetCode70:Climbing Stairs(爬楼梯)

这里写目录标题一级目录二级目录三级目录 一级目录 二级目录 三级目录

Alan0_0的博客 373

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

leetcode_70. Climbing Stairs 爬楼梯,非递归算法

题目: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 题意: 爬楼梯,每次只能爬1级或2级

qqzj_bupt的博客 437

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Leetcode题解(23)

69. Sqrt(x) 题目 分析,题目实现求一个int数的平方根,最暴力的算法就是逐个遍历,从1开始到x,判断是否有一个数i,其中满足i*i<=x,并且(i+1)*(i+1)>x;这个算法发虽然简单,但是效率不高。其实,按照暴力算法的思想,我们可以联想到在一个已经排好序的数组中查找一个数,该数正好满足上面的条件,因此可以采用二分查找的思想。代码如下: 1 class ...

weixin_30821731的博客 91

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Leetcode解题之路(golang版):70. 爬楼梯(Climbing Stairs)

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

myz123321的博客 377

力扣第 70 题:爬楼梯问题(Climbing Stairs)

定义dpidp[i]dpi表示爬到第iii级台阶的方法数。通过递归结合记忆化存储,成功解决了爬楼梯问题。避免了重复计算,性能优于纯递归。逻辑清晰,容易理解。如果对递归不熟悉,也可以通过迭代法或动态规划表实现,进一步优化空间复杂度。有关更多动态规划问题,欢迎继续关注!

weixin_48941116的博客 1539

【LeetCode】70. Climbing Stairs 解题报告(Python)

【LeetCode】70. Climbing Stairs 解题报告(Python)题目描述解法:动态规划 题目地址:https://leetcode.com/problems/climbing-stairs/submissions/ 题目描述 You are climbing a stair case. It takes n steps to reach to the top. Each tim...

ttinch的博客 349

LeetCode70. Climbing Stairs 爬楼梯 JAVA实现

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

帽帽的博客 2517

Leetcode 70. Climbing Stairs 爬楼梯

Leetcode 70. Climbing Stairs 爬楼梯70. Climbing Stairs 爬楼梯题目描述示例:解答代码 70. Climbing Stairs 爬楼梯 题目描述 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or...

importsys的博客 464

[LeetCode]70. Climbing Stairs

70. Climbing Stairs 一、题目 Problem Description: 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: T

KKKKKKOBE_24的博客 384

LeetCode 70. Climbing Stairs 题解

本题是动态规划的经典应用问题,主要考察对动态规划思想的理解和使用。通过使用动态规划,我们可以高效地计算爬到楼顶的不同方法数。动态规划的核心思想是:对于第i阶,有两种方法可以到达,因此。这种方法不仅适用于爬楼梯问题,还可以应用于许多其他类似的问题,例如斐波那契数列。掌握动态规划的思想,对于解决这类问题非常重要。

cannonjinx的博客 4170

[LeetCode] 70. Climbing Stairs

原题链接: https://leetcode.com/problems/climbing-stairs/ 1. 题目描述 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways...

Ber03的博客 176

leetcode python3 简单题70. Climbing Stairs

1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第七十题 (1)题目 英文: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many d...

从此做一个俗人 256
上一篇: python语法——yield 使用解析
下一篇: Leetcode算法——71、简化路径(simplify path)
HappyRocking
博客等级 码龄12年 222粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值