leetcode-第70题-爬楼梯

前端算法 | LeetCode第 70 题爬楼梯问题 第一步:如果你现在只有1个台阶(n=1),你只有一种方法,那就是直接走上去。所以,f(1)=1。第二步:如果你有2个台阶(n=2),你有两种方法:先走1个台阶再走1个台阶,或者直接走2个台阶。所以,f(2)=2。 阅读详情

博主并没有什么算法基础,所以写的不好,勿喷,抛砖引玉,欢迎交流,感谢。

以下算法有参考:https://blog.youkuaiyun.com/power177/article/details/88981594 非常感谢

//假设你正在爬楼梯。需要 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 阶
// Related Topics 动态规划
// 👍 1136 👎 0


package com.zqh.leetcode.editor.cn;

import java.util.HashMap;
import java.util.Map;

//Java:爬楼梯
public class P70ClimbingStairs {
    public static void main(String[] args) {
        Solution solution = new P70ClimbingStairs().new Solution();
        System.out.println(solution.stairsPlus(47));
        System.out.println(solution.stairsPlusPro(47));
        System.out.println(solution.stairs(47));
        // TO TEST
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int climbStairs(int n) {
            return stairsPlusPro(n);
        }

        // 普通递归
        public int stairs(int n) {
            if (n == 1) {
                return 1;
            }
            if (n == 2) {
                return 2;
            }
            //当前阶梯的可选择数=上一阶梯的可选择数+上2阶梯的可选择数
            return stairs(n - 1) + stairs(n - 2);
        }

        // 动态规划
        public int stairsPlus(int target) {
            //用来缓存第K阶的跳法
            Map<Integer, Integer> map = new HashMap<>();
            map.put(target, 1);
            int i = target - 1;
            while (i != -1) {
                //跳一步
                int c1 = i + 1;
                //跳两步
                int c2 = i + 2;

                int count = 0;
                if (c1 <= target) {
                    //未超出目标台阶
                    count += map.get(c1);
                }
                if (c2 <= target) {
                    //未超出目标台阶
                    count += map.get(c2);
                }
                map.put(i, count);
                //往下走,求下一台阶的跳法。
                i--;
            }
            return map.get(0);
        }

        // 动态规划
        public int stairsPlusPro(int target) {
            if (target == 1 || target == 2) {
                return target;
            }
            //用来缓存第K阶的跳法
            int[] result = new int[target + 1];
            result[1] = 1;
            result[2] = 2;
            for (int i = 3; i <= target; i++) {
                result[i] = result[i - 1] + result[i - 2];
            }
            return result[target];
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}

 

力扣小白刷题之70题爬楼梯 题目描述 爬楼梯,需要 n(正整数) 阶才能爬到楼顶。 每次可以爬 1 或 2 个台阶。有多少种方式可以爬到楼顶? 思路 动态规划 定义一个数组 dp 存储上楼梯的方法(方便起见数组下标从 1 开始),dp[i]表示走到第 i 个楼梯的方法数目。 第 i 个楼梯可以从第 i - 1 和 i - 2 个楼梯再走一步到达,走到第 i 个楼梯的方法数为走到第 i - 1 和第 i - 2 个楼梯的方法数之和。 dp[i] = dp[i - 1] + dp[i - 2] 时间复杂度O(n) 代码 问题 数组下标 阅读详情

相关推荐

LeetCode 第70题:爬楼梯

通过这次的算法探险,我们学会了如何优雅地解决爬楼梯的问题。这个“爬楼梯”的问题虽然看似简单,却涉及到了许多有趣的细节。通过详细的讲解和示例,我们深入理解了动态规划在解决爬楼梯问题中的应用。希望这篇文章能帮你更好地理解这道题目,如果有任何问题,欢迎留言讨论。

Gemini的博客 193

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

做题过程中第一时间想到的是使用递归思想,在提交代码后,发现在数据较大的时候,会出现数据溢出。 class Solution { public int climbStairs(int n) { if (n<=1){ return 1; } if (n<3){ return n; } return climb...

qq_41656303的博客 1991

QuickFix Java 实战(一)协议解析、环境搭建与首个应用

本文是QuickFix Java实战系列的第一篇,详细介绍了FIX协议的核心原理与QuickFix/J引擎的实战应用。内容涵盖FIX协议的标签化通信机制、QuickFix/J库的两种下载方法、协议定义文件解析,并通过一个完整的模拟订单发送示例,指导读者快速搭建首个FIX应用环境,实现消息生成与会话通信。

dog123的博客 494

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

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

happy_bigqiang的博客 2051

Palantir Vertex:数字孪生模拟与决策系统深度指南

Palantir Vertex是Foundry系统中的核心数字孪生模块,本质上是一个决策模拟器而非简单的数据可视化工具。它基于本体层构建,通过对象关系网络模拟现实世界实体,填补数据模型与业务决策间的鸿沟。核心功能包括:创建隔离的沙盒场景进行假设测试、修改参数模拟不同干预方案、对比虚实数据发现异常,并最终将最优决策回传至业务系统。典型应用场景涵盖供应链韧性评估、资产维护优化和应急方案制定等,帮助用户在复杂环境中做出更优决策。

轩哥的个人研究和成长记录 891

SAP MIGO屏幕增强的具体实施步骤介绍(SE19:MB_MIGO_BADI) <转载>

1.MIGO抬头屏幕增强具体增强实施步骤1.1.创建存储抬头客制化数据的增强表1.2.创建增强结构1.3.创建函数组ZMM_MIGO1.3.1.定义全局变量1.3.2.创建数据处理函数1.4.创建字屏幕9001屏幕PBOendif.endloop.1.5.实施新BADI增强SE19创建BADI实施双击实施类ZCL_MIGO_EN_01exportingendif.endmethod.endif.endif.exportingendmethod.

qq_55488207的博客 4507

LeetCode Top-100 T70-爬楼梯

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

qq_41544550的博客 551

在 ABAP Cloud 中玩转 CL_ABAP_PARALLEL 并行处理:从原理到实战

ABAP并行处理框架CL_ABAP_PARALLEL解析 本文系统介绍了SAP ABAP环境中实现并行处理的CL_ABAP_PARALLEL框架。该框架通过封装异步RFC和对话进程,为开发者提供了面向对象的API,显著提升大批量数据处理的效率。 文章首先分析了ABAP环境需要并行处理的原因:传统的串行处理在面对百万级数据时效率低下。然后详细介绍了CL_ABAP_PARALLEL的设计思路,它是一个"小型线程池"式的同步并行框架,适用于批量计算场景。此外,文章重点讲解了控制并行任务的关键参

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 338

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

爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 动态规划法 class Solution: def climbStairs(self, n: int) -> int: f0 = 0 f1 = 1 f2 = 2 if n<=0: ...

Stupid-Tyro的博客 7307

自然语言处理NLP星空智能对话机器人系列:Gavin大咖 Transformer 101问答集 第一问

自然语言处理NLP星空智能对话机器人系列:Transformer 101问答 [让天下没有难学的Transformer] 你问我答系列之一 Gavin大咖第一问: Transformer中的可训练Queries、Keys和Values矩阵从哪儿来? 以上是智华解答,供同学们参考。 星空智能对话机器人系列博客 NLP星空智能对话机器人系列:第二次星空智能对话机器人Zoom线上演示安排 NLP星空智能对话机器人系列:StarSpace: Embed All The Things NLP星空智能对

大模型与Agent智能体 991

基于Python的智能动漫更新监控爬虫系统:从原理到实战

本文详细介绍了如何使用Python构建一个智能化的动漫更新监控系统,涵盖从基础爬虫到高级自动化监控的全套解决方案。文章将深入探讨最新的网络爬虫技术,包括异步请求、反反爬策略、智能解析算法等,并提供完整的代码实现和性能优化方案。通过本系统,用户可以实时获取多个动漫平台的更新信息,并通过多种渠道接收通知。关键词:Python爬虫、动漫监控、自动化通知、异步爬虫、反反爬策略。

2201_76125261的博客 902

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

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?这里写代码片 class Solution { public: int climbStairs(int n) { // int re = 0; // if(n == 0 || n == 1){ // retur...

CourageKang的博客 5862

做cellchat画图时自环的角度颠倒,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 462

《LeetCode力扣练习》第70题 爬楼梯 Java

《LeetCode力扣练习》第70题 爬楼梯 Java 一、资源 题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶。 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 提示: 1 <= n <= 45 来源:力扣

XRT_knives的博客 800

微信小程序、H5微信公众号网页JSAPI:解决报错requestMerchantTransfer:fail:internal error(使用wx.requestMerchantTransfer错误)

如何解决requestMerchantTransfer:fail:internal error,微信小程序wx.requestMerchantTransfer报错,微信公众号H5网页使用jssdk调用wx.requestMerchantTransfer报错,JSAPI调起用户确认收款报错errMsg:“requestMerchantTransfer:fail:internal error“,微信小程序/H5 调起确认收款界面,JSAPI调起用户确认收款,微信公众号(H5),用户发起提现,商家转账给用户,用户

✅ 精选推荐文章 4962

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Leetcode第70题: 爬楼梯

思考到爬楼梯的规律其实就是符合斐波那契数列(Fibonacci Sequence) 规律的,问题就迎刃而解了。我们可以这样来思考:当我们从第 n-1 阶楼梯爬到第 n 阶楼梯时,需要1步;当我们从第 n-2 阶楼梯爬到第 n 阶楼梯时,需要2步。也就是说,到达第 n 阶楼梯的方法数等于到达第 n-1 阶楼梯的方法数加上到达第 n-2 阶楼梯的方法数,即 f(n)=f(n−1)+f(n−2),正好符合斐波那契通项。函数都会产生一个新的函数调用栈帧,该栈帧保存了函数的局部变量和返回地址。,所以递归树的高度是。

weixin_43425300的博客 1417

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode第70题_爬楼梯

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

qq_40263592的博客 883

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

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

力扣70题 爬楼梯C++

4. 输入 n=5 ,输出 8 (方法:1+1+1+1+1、1+1+1+2、1+1+2+1、1+2+1+1、2+1+1+1、1+2+2、2+1+2、2+2+1)。这本质上是斐波那契数列的应用,只是初始条件略有不同(斐波那契数列通常以 f(0)=0, f(1)=1 开头,本题 f(1)=1, f(2)=2 )。3. 当 n = 3 时,到达第3阶的最后一步只能是从第2阶爬1阶,或从第1阶爬2阶,因此方法数为 f(2) + f(1) = 3;// a表示f(n-2),b表示f(n-1),c表示f(n)

2501_94569265的博客 396

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

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

weixin_48941116的博客 1538

精选力扣500题 第57题 LeetCode 70. 爬楼梯【c++/java详细题解】

目录1、题目2、思路3、c++代码4、java代码 1、题目 假设你正在爬楼梯。需要 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 阶 2、思路 (

林深不见鹿 的博客 6197

LeetCode刷题笔记>>>第70题爬楼梯

LeetCode刷题笔记70题 题目描述: public int climbStairs(int n) { //时间超限 /** * 使用递归时因为每次都要重新计算花费时间和空间大,判定系统会判超时。 */ // if (n == 0) { // return 1; // } // if (n < 0) { // return 0; .

Sky_小天 209

LeetCode第70题:爬楼梯

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

朕蹲厕唱忐忑的博客 216

LeetCode——第70题:爬楼梯

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

RBreeze的博客 476

【LeetCode】第70题——爬楼梯(难度:简单)

【LeetCode】第70题——爬楼梯(难度:简单)题目描述解题思路代码详解方法一:递归方法二:数组注意点 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/climbing-stairs 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 示例 1 输入: 2 输出: 2

Se7en_Dayz的博客 384

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

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

xxxflower的博客 374

爬楼梯问题(Leetcode 第70题)

这道题的本质是一个斐波那契数列问题,可以通过动态规划来求解。利用滚动数组优化,我们用两个变量a和b代替了原本需要存储的整个数组,极大地节省了空间。在时间复杂度上,由于只需要遍历一次,我们的解法是高效的。

qq_17405059的博客 614
上一篇: leetcode-第118题-杨辉三角
下一篇: leetcode-第53题-最大子序和
97牛肉面
博客等级 码龄9年 54粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值