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

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 的情况,通过迭代计算前两项的和来得到结果。

相关文章:

  • 中国西部逐日1 km全天候地表温度数据集(TRIMS LST-TP;2000-2024)
  • GIC流协议接口
  • c++ Base58编码解码
  • [创业之路-407]:价值、价格、供求关系的规律如何指导创业和战略选择?
  • 【JS进阶】ES6 实现继承的方式
  • ARM处理器工作模式
  • NineData云原生智能数据管理平台新功能发布|2025年5月版
  • 算法篇 八大排序(冒泡 插入 选择 堆 希尔 快排 归并 计数)
  • Pandas和Django的示例Demo
  • 使用联邦多轨迹图神经网络(GNNs)结合稀缺数据预测婴儿脑连接|文献速递-深度学习医疗AI最新文献
  • Honor of Kings 2025.06.05
  • 【无标题】路径着色问题的革命性重构:拓扑色动力学模型下的超越与升华
  • Android四大组件通讯指南:Kotlin版组件茶话会
  • .net Span类型和Memory类型
  • 02 Deep learning神经网络的编程基础 逻辑回归--吴恩达
  • 实现基于Yolo的异常聚集算法
  • 任务调度器-关于中心化调度 vs 去中心化调度的核心区别
  • C++11 尾随返回类型:从入门到精通
  • 在 UE5 蓝图中配置Actor类型的Asset以作为位置和旋转设置目标
  • 【python深度学习】Day 45 Tensorboard使用介绍
  • 网站智能云/长沙网络营销顾问
  • 网站建设优秀网/东莞互联网公司排名
  • 做围棋死活题的网站/品牌推广经典案例
  • 专门做团购的网站有哪些/seo专员是做什么的
  • 怎么做公司内部网站/优化网站排名需要多少钱
  • 合肥最好的网站建设公司哪家好/百度搜索风云榜明星