跳台阶基础版、改进版(不能连续跳2阶)

本文介绍了经典的跳台阶算法问题,分为基础版和改进版。基础版中,每次可以跳1阶或2阶,求解跳到n阶楼梯的方法数。改进版增加了不能连续跳2阶的条件,通过动态规划方法解决,降低了空间复杂度。
摘要由CSDN通过智能技术生成

算法 跳台阶基础版、改进版(不能连续跳2阶)

@author:Jingdai
@date:2020.11.15

跳台阶(青蛙跳)是一个非常经典的算法问题,前几天看面试题看到一个跳台阶的改进版(不能连续跳2个台阶),现总结一下。

在介绍改进版解法之前先复习一下基础版,不想看的可以直接跳到改进版部分。

基础版

题目描述

有一个 n 阶的楼梯,你从最下面往上跳,每次可以跳1阶或2阶,有多少种方法可以跳到楼顶?

思路及代码

这个基础版很简单,对于第 n 阶,你只有两种方式跳上去:

  1. 从 n-1 阶跳1阶跳上去
  2. 从 n-2 阶跳2阶跳上去

所以就可以得到递推式:

在这里插入图片描述

然后可以利用递归方式求解或利用dp方式求解。看下面的代码:

  • 递归方式(不推荐,复杂度高,n较大时容易超时)

    public int jumpStairs(int n) {
          
        if (n <= 3)
            return n;
        return jumpStairs(n-1) + jumpStairs(n-2);
    }
    
  • dp方式

    public int jumpStairs(int n) {
          
        if (n <= 3)
            return n;
        int[] dp = new int[n];
        for (int i = 0; i < n; i++) {
          
            if (i <= 2) {
          
                dp[i] = i
  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值