【LeetCode 70】爬楼梯之动态规划法

LeetCode70 爬楼梯 LeetCode70 爬楼梯题目解题解题一:制表法自上而下递归解题二:动态规划自下而上递推解题三:矩阵快速幂解题四:通项公式 题目 解题 与 LeetCode《程序员面试金典》面试题 08.01. 三步问题 类似 解题一:制表法自上而下递归 // javascript var climbStairs = function(n) { let memos = new Array(n + 1).fill(-1); // 制表 return climbStairsHelper(n, memos); 阅读详情

题目描述:
假设你正在爬楼梯。需要 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 阶

题解:
这个问题可以被分解为一些包含最优子结构的子问题,即它的最优解可以从其子问题的最优解来有效地构建,我们可以使用动态规划来解决这一问题。

第 i 阶可以由以下两种方法得到:
在第 (i-1) 阶后向上爬一阶。
在第 (i-2)阶后向上爬 2 阶。
所以到达第 i 阶的方法总数就是到第 (i-1) 阶和第 (i-2) 阶的方法数之和。

令 sum[i] 表示能到达第 ii 阶的方法总数:

sum[i]=sum[i-1]+sum[i-2]
sum[i]=sum[i−1]+sum[i−2]

class Solution {
   /* n个台阶,一开始可以爬 1 步,也可以爬 2 步
      那么n个台阶爬楼的爬楼方法就等于 一开始爬1步的方法数 + 一开始爬2步的方法数,
      这样我们就只需要计算n-1个台阶的方法数和n-2个台阶方法数,
      同理,计算n-1个台阶的方法数只需要计算一下n-2个台阶和n-3个台阶,计算n-2个台阶需要计算一下n-3个台阶和n-4个台阶……
   */
    public int climbStairs(int n) {
       if(n==1) return 1;
        if(n==2) return 2;
        int sum[]=new int[n+1];
        sum[1]=1;sum[2]=2;
        for(int i=3;i<=n;i++){
            sum[i]=sum[i-1]+sum[i-2];
        }
        return sum[n];
    }
}
leetcode—70、爬楼梯 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、暴力法搜索求解 /*... 阅读详情

相关推荐

四足机器人机械结构设计:从腿型到驱动的全面解析

本文全面解析了四足机器人机械结构设计的核心要点。资深工程师老张深入探讨了并联腿与串联腿的选型策略、不同腿型布局对稳定性的影响,并详细对比了皮带轮与连杆驱动方式的优劣。文章结合实战经验,强调了足端设计、材料选择及整体结构轻量化等关键细节,为机器人开发者提供了从理论到实践的宝贵指导。

assembly8low的博客 630

算法学习:动态规划之爬楼梯问题

算法学习笔记

m0_64953392的博客 1831

Python实战:3分钟搞定A股K线数据抓取(附东方财富/腾讯API完整代码)

本文为量化交易初学者提供了一份快速获取A股K线数据的实战指南。通过对比东方财富与腾讯财经两大免费API的优劣,并附上可直接运行的完整Python代码,帮助读者在3分钟内搭建起自己的数据抓取管道,为构建量化交易系统奠定坚实的数据基础。

weixin_29062255的博客 2905

动态规划算法经典问题:爬楼梯

我们用动态规划方法解决日常生活中经常遇到的一个问题—爬楼梯问题。 一、问题描述 小明家住在二楼,每次回家都需要经过一个10层台阶的楼梯,小明每次可以选择一步走一级台阶或者一步走两级台阶。请帮小明计算他从楼下到家一共有多少种走法? 打个比方,小明可以选择每次都走一级台阶,那么他回家一共需要走十步,这是其中的一种种走法,不然,他还可以选择一次走两级台阶,那么他回家一共需要走五步,这是另外一种走法,除此之外,还有很多种不同的走法,现在我们要做的是把所有可能的走法数量统计出来。 在正式写程序之前,我们先一起整理一下

qq_53963637的博客 8128

AI赋能运筹优化:从参数生成到智能求解的工程实践

运筹学通过线性规划、整数规划等数学模型,为供应链、物流、生产排程等复杂决策问题寻找最优解,其核心价值在于提升资源利用效率与决策科学性。传统方法依赖精确的输入参数与专家经验,面临数据不准、建模门槛高、求解调优难等挑战。人工智能技术的引入,正从原理层面重塑这一流程:通过深度学习模型生成更贴合现实的动态参数(如需求分布、行驶时间),利用自然语言处理降低建模门槛,并借助强化学习对求解器进行智能参数调优。这种AI与运筹学的融合,在工程实践中显著提升了优化系统的自适应能力与求解效率,使其在应对实时交通、柔性生产调度等动

weixin_26913055的博客 595

COD论文笔记VSCode: General Visual Salient and Camouflaged Object Detection with 2D Prompt Learning

VSCode模型通过引入领域特定提示和任务特定提示,结合提示区分损失,成功地在单一模型中处理多个显著目标检测和伪装目标检测任务。这种方法不仅提高了模型的性能,还展示了其对未见任务的泛化能力。作者使用 Visual saliency transformer ICCV 2021 作为baseline model这张图展示了VSCode模型的整体框架,特别强调了2D提示学习方法。

985小菜鸡 1624

爬楼梯——动态规划

文章目录题目解法一:动态规划 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 解法一:动态规划 将dp[i]数组定义为到达第i阶楼梯有多少种方法,由每次可以爬1或2阶可以得到递推公式: dp[i]=dp[i-1]+dp[i-2] 其中,dp[i-1]、dp[i-2]分别为到达第i-1、i-2阶楼梯有多少种方法。然后再确定边界条件,dp[1]=1,dp[2]=2。这样得出来的实现过程时间复杂度和空间复杂度都是o(n),可以利用

weixin_44891861的博客 3745

CE 7.4中文版实战:如何用自动汇编功能快速生成游戏修改器(附CT表保存技巧)

本文详细介绍了CE 7.4中文版中自动汇编功能的使用方法,帮助用户快速生成游戏修改器。从环境配置、内存地址定位到自动汇编代码注入,再到CT表保存和独立EXE生成,提供全流程实战指南,适合逆向工程爱好者和游戏修改器开发者。

keras9composer的博客 356

c++刷题笔记4:爬楼梯

3月6日 解法1: 递归,答案是正确的,但超时了,故不采取。 法2:将递归换位动态规划,即到达第n阶楼梯的方案可由第n-1和n-2阶楼梯方案之和求出,因为只可能从这两个楼梯才能到达第n阶楼梯。即: f(n) = f(n-1)+f(n-2) ,同时要注意其边界,即当n=0、n=1时,都只有一种方案,n=2时方案数位f(0)+f(1) = 1+1 =2,依次类推即可求出f(n)。 ...

qq_60143666的博客 705

面试提问:数据开发中如何通过指标拆解来指导SQL编写?(附拆解模板)

摘要:指标拆解是一种高效的数据分析方法,通过将复杂业务指标分解为可执行的原子指标,指导SQL查询的编写。核心步骤包括:明确指标定义、拆解原子指标、定位数据源、确定分组维度、构建中间表。文章提供了指标拆解模板和实际案例(如用户留存率计算),并总结了拆解带来的5大好处:逻辑清晰、易于调试、可复用、降低错误率、便于协作。最后强调"一定义、二拆解、三定位、四分步、五合并"的口诀,适用于数仓开发、BI报表等场景。

石榴姐yyds 266

论文翻译:Automatic Lesson Plan Generation via Large Language Models with Self-critique Prompting

在本文中,我们利用大型语言模型(LLMs)的理解和生成能力来自动生成定制化的课程计划。这解决了传统计划可能无法充分满足不同教学环境和学生群体的特定需求的常见挑战。我们提出了一个新颖的三阶段过程,包括使用检索增强生成(RAG)逐步生成课程计划的每个关键组成部分,通过LLMs进行自我批评,以及随后的细化。我们使用这种方法为小学2至5年级生成了涵盖80多个主题的数学课程计划。邀请了三位经验丰富的教育工作者制定全面的课程计划评估标准,然后使用这些标准将我们的LLM生成的课程计划与同一主题的实际课程计划进行基准比较。

CSPhD-winston的博客 1100

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

方法一:动态规划 思路和算法 我们用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万+

Openclaw错误分析与解决方案之:Agent couldn‘t generate a response. Please try again.

Openclaw错误分析与解决方案:Agent couldn't generate a response. Please try again.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1221

leetcode第70题:动态规划法之爬楼梯问题

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

我只会html 303

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

leetcode第70题python版爬楼梯动态规划法

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

前端帅小伙 726

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

145、【动态规划】leetcode ——70. 爬楼梯:暴力法+动态规划(C++/Python版本)

仅设置两个变量来记录,r始终指向最后一个数,l指向其前一个数。因为楼梯只有上一步和上两步,所以到达第。阶楼梯的方法个数,可以依托于到达第。阶楼梯的方法个数,或依托于到达第。递归从后往前,迭代从前往后。到达第i阶楼梯的方法个数。阶楼梯,可以根据到达由第。

STAR GAME 791

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深入浅出动态规划--基本动态规划

一维动态规划 LeetCode 70 爬楼梯 题目描述:给定n阶台阶,每次可以走一步或者两步,求共有多少种方法走完n阶楼梯。 解析:考虑到到第阶楼梯的方式有两种,从第阶走一步到达或者从第阶走两步到达,即可推得到到达第阶方法数,即常见的斐波那契数列。 解法一:动态规划 时间复杂度 空间复杂度 class Solution { public: int climbStairs(int n) { if (n <= 2) return n; int pre

sxl_smile的博客 188

斐波拉契数列解法

1、题目 题目:力扣 70: 爬楼梯:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 2、解法 第一种:递归法直接求解 存在超时问题 时间复杂度为O(2^n) class Solution { public: int climbStairs(int n) { if(n==1 || n==2) return n; return climbStairs(n-1)+cli

Miao的博客 350

Leetcode70. Climbing Stairs

Leetcode70. 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? Note:...

magic_jiayu的博客 400

Leetcode 70:爬楼梯

Leetcode 70:爬楼梯题目描述我的解法:暴力法运行超时其它解法1:对暴力法的优化其它解法2:动态规划其它解法3:斐波那契数其它解法4:直接套斐波那契通项公式 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释:有两种方法可以爬到楼顶。 1....

IcdKnight的博客 243

Leetcode分门别类 - 动态规划-Leetcode70-Climbing Stairs

动态规划 Leetcode 70 爬楼梯问题 问题描述:每次爬楼梯可以爬一阶或者两阶,爬上N阶楼梯共有多少种爬法。 问题分析:爬到n阶的那一步可能分为两种情况,又第n-1阶或者n-2阶爬上来,于是F(n) = F(n-1) + F(n-2)又回到斐波拉契数列。 记忆搜索解法 class Solution { private: vector<int> memo; i...

XIEZIHAO123123的博客 289

【leetcode】70.爬楼梯(动态规划,数学法,开阔思路,java实现)

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 阶 方法一:动态规划 思路和算法 我们用 f(

Viper的程序员修炼手册 1495

LeetCode70.爬楼梯 (JavaScript解法)

改题目本质为斐波那契数列,本人在这里提到3种方法,分别为记忆递归,和利用数组dp,以及对方法二的优化。

weixin_45142754的博客 406

【力扣/牛客刷题】70. 爬楼梯

语录:⭐每一个不曾起舞的日子,都是对生命的辜负。作者:✿✿ xxxflower. ✿✿。专栏:【力扣/牛客刷题】篇。

xxxflower的博客 374

代码训练营第41天:动态规划part1|leetcode506斐波那契|leetcode70爬楼梯|leetcode746使用最小花费爬楼梯

按照方法论过了一次,确实对递推更理解了。 3,leetcode70 爬楼梯 由于一次可以爬一个或者两个,那其实每次要爬到i,可以从i-1爬上来,也可以从i-2爬上来。那就是i-1的方案和i-2的方案的和。 看上去和上面那个斐波那契很像,但是是完全不同的思考思路。和上面那个思路相似。爬上当前楼层有两种方案,从i-1或者i-2爬上来,支付的费用应该是min(dp[i-1]+cost[i-i], dp[i-2]+cost[i-2]); 随想录给出的改进版本,是利用了这个递推过程只用到了前两个的特点:

weixin_44442376的博客 94

Leetcode刷题(第70题)——爬楼梯

一、题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 二、示例 示例一 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例二 输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶 3. 2 阶 + 1 阶 三、思路 第1阶楼梯存在1种爬法 第2阶楼梯存在2中爬法,因为可能为从第0阶一次爬2阶,也可能是

weixin_47450807的博客 308
上一篇: 单源最短路径Dijkstra算法的实现(java版)
下一篇: 【LeetCode 1046】最后一块石头的重量
菜鸭子
博客等级 码龄8年 75粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值