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

爬楼梯(js实现,LeetCode:70)

 这道题可以先找规律:

台阶数方法方法数
000
111
21+1;0+22
31+1+1;1+2;2+13
41+1+1+1;1+2+1;1+1+2;2+2;2+1+15
.............................n

通过枚举发现规律:最后一步有可能跨了一级台阶,也有可能跨了两级台阶,f(n)为爬到n级台阶上的方法数,那么f(n)=f(n-1)+f(n-2),这正是斐波那契数列,有了这个公式可以写出代码:

/**
 * @param {number} n
 * @return {number}
 */
var climbStairs = function (n) {
    let add_num = 1
    let left_point = 0
    let right_point = 0
    for (let i = 1; i <= n; i++) {
        left_point = right_point;
        right_point = add_num;
        add_num = left_point + right_point
    }
    return add_num
};

 算法的时间复杂度为O(N),空间复杂度为O(1)


http://www.kler.cn/a/590151.html

相关文章:

  • 每天五分钟深度学习PyTorch:循环神经网络RNN的计算以及维度信息
  • css的显示模式
  • Redis----大key、热key解决方案、脑裂问题
  • Matlab 舰载机自动着舰控制系统研究
  • SpringMVC(四)Restful软件架构风格
  • 【从零开始学习计算机科学】算法分析(三)动态规划 与 贪心算法
  • STM32---FreeRTOS事件标志组
  • 数学建模:MATLAB循环神经网络
  • PostgreSQL教程(二)九大类型
  • 第27周JavaSpringboot git初识
  • 如何在Django中设置CSRF Token?
  • 【计算机网络】浏览器组成、工作原理、页面渲染流程...
  • 什么是 Fisher 信息矩阵
  • JDBC数据库连接池技术详解——从传统连接方式到高效连接管理
  • Android Dagger2 框架注入模块源码深度剖析(四)
  • matlab图论分析之指标计算(二)
  • CSS @media print 使用详解
  • Flutter_学习记录_状态管理之GetX
  • 通过物联网与可视化技术搭建的智慧工地管理云平台,java智慧工地源代码,企业级源码
  • OpenManus 架构的详细技术实现