有N个台阶,一步可以走一梯或者两梯,请问有多少种走法

最近面试,被问到了这个问题,由于没有看过算法这方面的题,自然这题就凉凉了

力扣题链接 https://leetcode-cn.com/problems/climbing-stairs/

图片来源知乎

分析特殊情况

F(0) n == 0 0种走法

F(1) n == 1 1种走法

F(2) n == 2 2种走法

N > 2

分析当要走N梯时,到底N梯时最后的一种走法只有两种,走一梯或者走两梯,那么就是从 n-1或者n-2梯上来

所以 F(N) = F(N-1) + F(N-2)

递归实现

function calcWalkWay(n) {if (n <= 2) return nreturn calcWalkWay(n-1) + calcWalkWay(n-2)
}

优化,由于上面是递归,栈内存会消耗很大,空间复杂度很大

动态规划

可以使用动态规划

dp[n]就代表第n梯的走法

function calcWalkWay(n) {if (n <= 2) return nconst dp = []dp[1] = 1dp[2] = 2for (let i = 3; i <= n; i++) {dp[i] = dp[i-1] + dp[i-2]}return dp[n]
}

根据上面的还可以对数据优化

function calcWalkWay(n) {if (n <= 2) return nlet pre = 1let current = 2for (let i = 3; i <= n; i++) {//[current, pre] = [current + pre, current]const temp = currentcurrent = current + prepre = temp}return current
}

有N个台阶,一步可以走一梯或者两梯,请问有多少种走法相关推荐

  1. 有50级台阶,每次走一阶或两阶,有多少种走法?

    在网上看到这个问题,有人给出了代码,用的是求Fibonacci数列前n项和的原理,代码如下: int Fibonacci(int n) {int result[3] = {1, 2};if (num ...

  2. N级台阶(比如100级),每次可走1步,2步,3步,求总共有多少种走法?

    算法题:N级台阶(比如100级),每次可走1步,2步,3步,求总共有多少种走法? 平常不怎么研究算法,直到一次面试后,面试官给我了一个算法题,因为平常没有去看过类似的东西,所以就做错了 根据上面的题目 ...

  3. 【算法题目】有n个台阶,青蛙一次只能跳1步到k步,请问有多少种跳法?

    有n个台阶,青蛙一次只能跳1步到k步,请问有多少种跳法? 这个问题是一个经典的爬楼梯问题,可以使用递推方法解决. 设f[i]表示到达第i层台阶的跳法数,那么到达第i层台阶的跳法数可以由从第i-1,i- ...

  4. N级台阶,一次上1级或2级或3级或M级,总共有多少种走法

    思路 先分析最简单的,也就是每次要不上1级,要么上2级. 这个问题需要反过来思考才能比较容易的找到规律.总共有N级台阶,因为每次要么上1级要么上2级,因此对于第N级台阶来说,它的前一步要么是在N-1级 ...

  5. 动态规划:机器人走n米有多少种走法问题

    最近算法实验中的一个题目,特此分享一下解法. 题目,算法思路,代码如下: /** 题目:* 一个机器人每步可以走 1 米.2 米或 3 米.* 编写一个动态规划算法,计算机器人走n 米,有多少种走法( ...

  6. 冬冬爬楼梯,一步可以1级,也可以爬2级、3级。冬冬很可爱,每到一处楼梯处,他都想知道直完这个楼梯有多少种走法。但由于有的时候楼梯级数太多,可能是个天文数字,很显然,对于还处于小学5年级的冬冬是不太现实

    冬冬爬楼梯,一步可以1级,也可以爬2级.3级.冬冬很可爱,每到一处楼梯处,他都想知道直完这个楼梯有多少种走法.但由于有的时候楼梯级数太多,可能是个天文数字,很显然,对于还处于小学5年级的冬冬是不太现实 ...

  7. 超级楼梯——有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法?

    有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法? 现在给你一个正整数n(0<n<40),请你输出不同的走法数. 如n=2,则输出1(你只有一种走 ...

  8. 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现。

    有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现. 输入: 输入一个整数M(1<=M<=20),表示楼梯的级数. 输出: 输出不同走法 ...

  9. 请编写一个函数,计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和向下走,不能往左和往上走。

    请编写一个函数,计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和向下走,不能往左和往上走. 递归实现: # ...

最新文章

  1. nginx启动只有master没有worker_深入浅出Nginx
  2. 方法重载-Overload
  3. 非线性方程组求解Matlab实现 (多元牛顿方法、Broyden方法、Broyden方法2)
  4. Ubuntu18.04 显卡驱动安装
  5. JVM-分代垃圾回收器
  6. kafka describe topic
  7. PHP-Webshell免杀研究
  8. SEO的有利因素跟不利因素
  9. 求职信计算机工程师英语作文,开发工程师英文求职信范文
  10. HTML基础 DOM概览(第一天)
  11. mysql外键实例学生成绩_mysql 外键(foreign key)的详解和实例
  12. scrapy python下载图片_使用Scrapy自带的ImagesPipeline下载图片,并对其进行分类。
  13. SQL语句生成器 V2.0
  14. 经典白平衡算法(灰度世界法和完美反射法MATLAB完整代码)
  15. 云计算机根据部署,华为云计算FusionCompute环境部署实验之使用批量部署工具安装...
  16. 读书笔记 : 人类简史
  17. CPU-显卡-硬盘性能天梯图排行榜源码
  18. 如何从本地硬盘启动计算机,解密:如何在计算机BIOS中设置硬盘启动
  19. PC端微信的文件夹都是些什么
  20. 纸壳CMS体验升级,快速创建页面,直接在页面中修改内容

热门文章

  1. 网易星球区块链靠谱吗?看着点就知道
  2. CSDN的台历到了,挺好看的,放在桌子上的感觉很拉轰啊。
  3. 回忆录 - IKCEST首届“一带一路”国际大数据竞赛(2019)获奖经历
  4. 暴力的黑盒对抗样本攻击 -- ZOO
  5. UOS V20 nmcli命令配置ip静态地址
  6. 减震透气的清爽跑鞋,让跑步更轻松,咕咚10K悦弹体验
  7. 游戏项目管理经验方法
  8. Vue3.0由单页面应用改为多页面开发
  9. @程序员,承认吧,都是你的错!
  10. 常用docker镜像