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

70. 爬楼梯

目录

一、问题描述

二、解题思路

三、代码

四、复杂度分析


一、问题描述

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

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

二、解题思路

📌 举例分析:

  • n = 1 → 只有一种走法:[1]

  • n = 2 → 两种走法:[1,1], [2]

  • n = 3 → 三种走法:[1,1,1], [1,2], [2,1]

  • n = 4 → 五种走法:[1,1,1,1], [1,1,2], [1,2,1], [2,1,1], [2,2]

发现没?它的规律如下:

f(n)=f(n−1)+f(n−2)f(n) = f(n - 1) + f(n - 2)f(n)=f(n−1)+f(n−2)

意思是:

  • 如果最后一步是走 1 阶,那前面就是 f(n-1) 种走法;

  • 如果最后一步是走 2 阶,那前面就是 f(n-2) 种走法。

三、代码

class Solution {
public:int climbStairs(int n) {// 如果台阶数为1或2,直接返回n(因为1阶1种方法,2阶2种方法)if (n <= 2) return n;int prev2 = 1;  // 表示到达第1阶的方法数int prev1 = 2;  // 表示到达第2阶的方法数int current;    // 当前阶数的方法数,初始未定义// 从第3阶开始,依次推算到第n阶for (int i = 3; i <= n; ++i) {current = prev1 + prev2; // 第i阶的走法 = 第(i-1)阶 + 第(i-2)阶prev2 = prev1;           // 更新 prev2 为上一轮的 prev1prev1 = current;         // 更新 prev1 为当前结果}// 最终返回的是第n阶的走法总数return current;}
};

四、复杂度分析

时间复杂度O(n)
空间复杂度O(1)
http://www.xdnf.cn/news/244.html

相关文章:

  • 环境搭建与入门:Flutter SDK安装与配置
  • 《数据结构初阶》【时间复杂度 + 空间复杂度】
  • Echart 地图放大缩小
  • SQL SERVER里面也可以插入存储过程,操作TCP,WEBSOCKET吗?数据发生改变时用于通知客户端
  • C++手撕STL-其一
  • 1、企业级在线办公套件推荐:OnlyOffice 全面介绍
  • 容性串扰-信号与电源完整性分析
  • [滑动窗口]209. 长度最小的子数组
  • 大模型落地实践:哪些行业正在被AI颠覆?
  • STM32单片机C语言
  • AI数字人如何深度赋能政务场景?魔珐科技政务应用全景解读
  • Linux CentOS 更改MySQL数据库目录位置
  • Ambari 中移除/重装 yarn 集群中的 NodeManager 节点
  • AI绘制流程图,方法概述
  • 仿腾讯会议项目实现——设置配置文件
  • HOOPS Exchange 与HOOPS Communicator集成:打造工业3D可视化新标杆!
  • 数字化转型浪潮下,B端产品如何助力企业乘风破浪?
  • 【天外之物】角动量与合力矩
  • 如何使用Labelimg查看已经标注好的YOLO数据集标注情况
  • PoCL环境搭建
  • 处理图像的深度神经网络(DNN)有哪些呢?
  • 基于n8n的AI应用工作流原理与技术解析
  • android编译使用共享缓存
  • java基础问题
  • 用DeepSeek制作会议记录
  • 【Pandas】pandas DataFrame where
  • 自动驾驶安全模型研究
  • SuperMap iClient3D for WebGL 如何加载WMTS服务
  • 5.1 城市给水排水管道工程
  • Flutter异常Couldn‘t find dynamic library in default locations