当前位置: 首页 > web >正文

LeetCode-70. 爬楼梯

1、题目描述

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

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

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶

示例 2:

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶

提示:

  • 1 <= n <= 45

2、代码

class Solution
{public:int climbStairs(int n) {// 处理边界情况:n为1或2时直接返回nif(n <= 2) {return n;}// 初始化前两个状态:// prev_prev 表示第n-2阶的方法数(初始对应n=1,值为1)// prev 表示第n-1阶的方法数(初始对应n=2,值为2)int prev_prev = 1, prev = 2, current;// 从第3阶开始迭代计算,直到第n阶for(int i = 3; i <= n; ++i) {// 计算当前阶的方法数:等于前两阶方法数之和current = prev_prev + prev;// 更新前两阶的状态,为下一次迭代做准备// prev_prev 移动到 prev 的位置// prev 移动到 current(即当前计算出的第i阶)的位置prev_prev = prev;prev = current;}return current;}
};

3、解题思路:

  1. 问题分析:每次可以爬 1 或 2 个台阶,到达第 n 阶的方法数可以分解为从第 n-1 阶爬 1 步和从第 n-2 阶爬 2 步的方法数之和,这符合斐波那契数列的递推关系。
  2. 动态规划优化:由于每次只需要前两项的值,我们可以用两个变量来保存前两项,避免使用数组,从而将空间复杂度优化到 O (1)。
  3. 边界条件:当 n=1 时,只有 1 种方法;当 n=2 时,有 2 种方法。对于 n≥3 的情况,通过迭代计算前两项的和来得到结果。
http://www.xdnf.cn/news/12163.html

相关文章:

  • 第二章支线八 ·CSS终式:Tailwind与原子风暴
  • uniapp中使用aixos 报错
  • Kafka入门-消费者
  • vue2中使用jspdf插件实现页面自定义块pdf下载
  • vue2 , el-select 多选树结构,可重名
  • 网页抓取混淆与嵌套数据处理流程
  • C:\Users\中文名修改为英文名
  • 大模型微调技术全景图:从全量更新到参数高效适配
  • 用 NGINX 构建高效 POP3 代理`ngx_mail_pop3_module`
  • 厂区能源监控系统:网关赋能下的高效能源管理与环保监测
  • Elasticsearch:spring2.x集成elasticsearch8.x
  • OpenCV在图像上绘制文字示例
  • Apache Druid 架构深度解析:构建高性能分布式数据存储系统
  • LINUX编译vlc
  • Qt多线程访问同一个数据库源码分享(基于Sqlite实现)
  • [论文阅读] 人工智能+软件工程 | MemFL:给大模型装上“项目记忆”,让软件故障定位又快又准
  • 阿里云服务器安装nginx并配置前端资源路径(前后端部署到一台服务器并成功访问)
  • 聊一聊 .NET在Linux下的IO多路复用select和epoll
  • Neo4j图数据库管理:原理、技术与最佳实践
  • MCP实践
  • C++.读取文件(1.5w字)
  • ajax学习手册
  • 111页可编辑精品PPT | 华为业务变革框架及战略级项目管理华为变革管理华为企业变革华为的管理模式案例培训
  • 高通camx Node相关
  • UI学习—cell的复用和自定义cell
  • 验证电机理论与性能:电机试验平板提升测试效率
  • 【Redis】笔记|第10节|京东HotKey实现多级缓存架构
  • Flask+LayUI开发手记(八):通用封面缩略图上传实现
  • 适用于vue3的移动端Vant4组件库
  • Java-39 深入浅出 Spring - AOP切面增强 核心概念 通知类型 XML+注解方式 附代码