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 阶

思路

一道简单的动态规划问题。从第n个台阶开始考虑:第n个台阶只能由第n-1个或第n-2个台阶跳上来,第n-1个台阶只能由第n-2个或第n-3个台阶跳上来…第2个台阶只能由平地或第一个台阶跳上来,第一个台阶只能由平地跳上来。由此可以看出,到第n个台阶的走法 = 到第n-1个台阶的走法 + 到第n-2个台阶的走法。因为到第1个台阶和第2个台阶的走法已经知道了,所以从到第3个台阶的走法开始计算,一直算到第n个台阶的走法即可。

解答

class Solution {
public:
    int climbStairs(int n) {
        if(n <= 2) return n;
        vector<int> v(n+1, 0);
        v[1] = 1;
        v[2] = 2;
        for(int i = 3; i <= n; ++i) v[i] = v[i-1] + v[i-2];
        return v[n];
    }
};
【Leetcode】70.爬楼梯 矩阵乘法O(logN)复杂度解决形如斐波拉契数列的问题 阅读详情

相关推荐

红外与可见光融合避坑指南:LLVIP数据集实测6大算法效果对比

本文基于专为弱光视觉设计的LLVIP数据集,对GTF、DenseFuse、FusionGAN、IFCNN等6种主流红外与可见光图像融合算法进行了深度实测与对比。通过客观指标与可视化分析,揭示了算法在极端弱光下易出现特征丢失的共性问题,并探讨了融合图像对下游目标检测任务的实际增益,为工程选型与算法调优提供了实用指南。

weixin_29092031的博客 439

10级台阶,一次一步或两步,打印所有的走法

public class nm123 { public static void main(String[] args) { printSteps("", 10); } private static void printSteps(String preSteps, int leftSteps) { if(preSteps == null) preSteps =

laughitover 4400

企业知识库AI助手的权限管理架构:如何实现细粒度控制?

在展开架构设计前,我们需要先明确“细粒度权限”的核心定义,并理解它对AI助手的特殊意义。权限管理的“粒度”,本质是权限控制的精准程度。维度粗粒度权限细粒度权限资源范围entire document(整个文档)field/paragraph(字段/段落)操作类型read/write(读/写)generate_summary/download/export(生成摘要/下载/导出)上下文约束无(静态权限)time/ip/device(时间/IP/设备)适用场景简单系统(如内部wiki)

大数据洞察的博客 1039

爬楼梯,n阶台阶,每次可上1或2步,有一次机会可以在任意台阶上回退一步,也可选择放弃回退机会,到达顶端一共几种不同走法?

爬楼梯,每次可上1或2步,有一次机会可以在任意台阶上回退一步,一共几种不同走法?

qq_51225888的博客 1659

深入博通PEX89000内部:那颗ARM CPU和Synthetic Mode到底能玩出什么花样?

本文深入解析博通PEX89000系列PCIe交换芯片内置的ARM CPU与Synthetic Mode技术,揭示其在AI计算和数据中心的智能潜能。通过ARM Cortex CPU的实时控制和Synthetic Mode的自治网络功能,PEX89000实现了GPU集群的动态拓扑重组和资源池化,大幅提升AI训练效率。文章还探讨了该技术在软件定义数据平面和弹性AI架构中的创新应用。

weixin_30776273的博客 209

线程池详解(通俗易懂超级好)

目标 【理解】线程池基本概念 【理解】线程池工作原理 【掌握】自定义线程池 【应用】java内置线程池 【应用】使用java内置线程池完成综合案例 线程池 线程池基础 线程池使用 线程池综合案例 4.学员练习 5.线程池总结 概念介绍 1:什么是线程池 2:为什么使用线程池 3:线程池有哪些优势 什么是池 什么是线程池 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runna.

拉格朗日的学习笔记 12万+

裴波那契数列问题和爬楼梯问题的解法(递归和动态规划)

裴波那契数列问题和爬楼梯问题的解法(递归和动态规划) 1. 裴波那契数列概述 斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…这个数列从第3项开始,每一项都等于前两项之和。 所以它的通式就是 f(n) = f(...

阿福呀 2301

Python 爬虫实战:华尔街见闻精选文章爬取(反反爬 + 投资情绪分析)

Python 爬虫实战:华尔街见闻精选文章爬取(反反爬 + 投资情绪分析)

yansideyucsdn的博客 969

leetcode----(70)爬楼梯-与斐波那契函数之间的关系

爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。 我们用 f(x)表示爬到第 xx 级台阶的方案数,考虑最后一步可能跨了一级台阶,也可能跨了两级台阶,所以我们可以列出如下式子: 跨台阶 f(x) = f(x - 1) + f(x - 2) ,x为正整数 每次跨一级或者两级台阶的转移方程,和斐波那契函数的方程有所相似; 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱

weixin_53371096的博客 311

STM32 cubeMX配置串口重定向

这篇文章主要讲解什么是串口重定向,为什么要串口串口重定向。使用printf函数和上位机通信是非常的方便的。希望大家都能够掌握。

m0_49476241的博客 4572

Power Switch与Tap Cell关系

tap cell可以选用一般类型的tap cell,无须secondary pg pin,因为此时switch cell的阱电位接到输入power net上了,switch cell可以正常上电,也可以给core内正常供电,tap cell的阱电位接switch cell输出的power,需要注意的是此时switch cell与core内其他cell的阱电位是不同的,所以为了避免drc问题,需要在switch上盖hard blockage或者keepout margin。2)自带阱偏置的switch。

m0_61544122的博客 2334

关于上楼梯问题(斐波那契数列应用)

问题1:楼梯上有n阶台阶,上楼时可以一步上1阶,也可以一步上两阶,编写算法计算共有多少种不同的上楼梯的方法。 为什么说上楼梯问题是斐波那契数列的应用呢?我们可以先列举n比较小的时候。 n=1:只有 {1} 一种(1) n=2:可以有 {1 1} 和2 两种(2) n=3:可以有 {1 2} 和 {2 1} 和{1 1 1} 三种(3) n=4:可以有{2 2} 和{1 1 2} 和{1 2 1} 和{2 1 1}和 {1 1 1 1} 五种(5) … 而斐波那契数列(Fibonacci sequence),

qq_39320046的博客 6736

python ERA-5气象数据NetCDF格式解析(一)

python ERA-5气象数据NetCDF格式解析

weixin_43896283的博客 2638

LeetCode 70:爬楼梯(Java实现)

LeetCode 70:爬楼梯题目思路1:动态规划代码结果思路2:数学,斐波那契 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种...

qq_45093368的博客 832

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【LeetCode】70.爬楼梯

我们从最后一级台阶n开始分析,有两种方法可以上去,n-1爬一次即可,n-2需要两个台阶即可到达第n个台阶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?提交不能通过,超出时间限制了,时间复杂度是O(2^n)在vscode里运行是没有问题的,放到力扣里就报错了。需要 n 阶你才能到达楼顶。当前层爬楼梯方法数等于前两层爬楼梯数相加。注意:给定 n 是一个正整数。: 有两种方法可以爬到楼顶。: 有三种方法可以爬到楼顶。

weixin_63135906的博客 1135

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeetCode70爬楼梯

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

sakurasakura1996的博客 518

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Leetcode70--爬楼梯

Leetcode70–爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 编程语言:python 作者:黑暗主宰 邮箱:shengzhanhe@gmail.com 文章目录Leetcode70--爬楼梯题目描述解题思路 Leetcode70–爬楼梯 题目描述 原题链接: ​ https://leetcode-cn.com...

EngineerHe的博客 622

LeetCode 70 - 爬楼梯

本文介绍了LeetCode第70题“爬楼梯”的解题方法。题目要求计算爬到n阶楼梯的不同方法数,每次可以爬1或2阶。核心思路是将问题转化为斐波那契数列问题,通过动态规划求解。文章详细讲解了三种解法:基础动态规划(O(n)空间)、空间优化动态规划(O(1)空间)和矩阵快速幂(O(log n)时间)。提供了Python、Java和Rust的代码实现,并总结了动态规划的关键点、易错点和优化方向。该问题帮助理解状态转移和空间优化技巧,是动态规划的经典入门题目。

weixin_45980775的博客 1443

Leetcode 70.爬楼梯

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

EngineerHe的博客 428

力扣70. 爬楼梯

这道题很显然属于斐波那契数列的一个变体,所以第一想法是使用递归去做。于是很容易得到公式f(n)=f(n-1)+f(n-2) f(1)=1 f(2)=2,是一个多路递归。但是如果单纯递归这道题会超时,所以还需要加上一个备忘录,通过map将之前出现的值存储一下,这个也就是递归优化-记忆法。

qq_45858191的博客 479

LeetCode第70题_爬楼梯

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

qq_40263592的博客 883

LeetCode 70. 爬楼梯

LeetCode 70. 爬楼梯 解题思路:使用动态规划,类似于不同路径那道题,属于计数型动态规划。不同路径那种坐标型的动态规划,当前第i行第j列的方案树值取决于上一行和前一列各自贡献的加和。这道题,dp[i]只能从dp[i - 1]和dp[i - 2]过来,所以状态转移方程就是:dp[i] = dp[i - 1] + dp[i - 2] 官方解答: 注:要爬n个台阶,dp一开始要开n + 1大小。最后一个状态为dp[n],而非之前的dp[n -1]。下面给出两种代码实现,一种是普通的动规实现,另一种使

享受当下 136

LeetCode第3天之《70 爬楼梯》

LeetCode70 爬楼梯 题目描述 假设你正在爬楼梯,有n个台阶,每次你可以跨1个或2个台阶。你有多少种不同的方法可以到达屋顶呢? 注意:n是一个正整数 示例 输入:2 输出:2 解释:只有两个台阶,你可以选择1阶1阶的爬,或者一次爬两阶,因此共有两种方法。 输入:3 输出:3 解释: 1阶 + 1阶 + 1阶 1阶 + 2阶 2阶 + 1阶 共有三种方法 题目解析 题目问的是我们一共有多少种爬楼梯的方式,即每次都可以选择爬一阶和爬两阶,将这两个分支的所有可能情况加起来的就是我们要的答案

weixin_44184990的博客 166

LeetCode70. 爬楼梯

爬楼梯

u011485472的博客 724

Leetcode 70. 爬楼梯

Leetcode 70. 爬楼梯1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/climbing-stairs/   本质上就是一个动态规划问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std; #include "algorithm

珍惜 9123
上一篇: 509. 斐波那契数
下一篇: 62. 不同路径
MegaBytes
博客等级 码龄8年 45粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值