首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
跳台阶
[编程题]跳台阶
热度指数:1082292
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
数据范围:
要求:时间复杂度:
,空间复杂度:
示例1
输入
2
输出
2
说明
青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2
示例2
输入
7
输出
21
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(9)
邀请回答
收藏(3692)
分享
提交结果有问题?
2353个回答
610篇题解
开通博客
牛客题解官
发表于 2020-05-29 14:53:44
精华题解
#描述 此题和斐波拉契数列做法一样。也将用三个方法来解决,从入门到会做。 考察知识:递归,记忆化搜索,动态规划和动态规划的空间优化。 难度:一星 #题解 ###方法一:递归 题目分析,假设f[i]表示在第i个台阶上可能的方法数。逆向思维。如果我从第n个台阶进行下台阶,下一步有2中可能,一种走到第n-
展开全文
漫漫云天自翱翔
发表于 2021-06-22 22:48:14
精华题解
题解一:记忆化搜索假设有n阶台阶,在所有的跳法中,由于青蛙一次只能跳1步或者2步,所以青蛙跳上最后一阶只能由f(n-1)+1 或者f(n-2)+2 这两种情况得来。即:f(n)=f(n-1)+f(n-2)同理:f(n-1)=f(n-2)+f(n-3),以此类推。这其实就是一个斐波拉契数列。图示如下:
展开全文
牛客题解官
发表于 2022-04-22 12:36:01
精华题解
题目主要信息: 一只青蛙一次可以跳1阶或2阶 求跳到第nnn阶的种类数 举一反三: 学习完本题的思路你可以解决如下题目: BM62.斐波那契数列 BM64.最小花费爬楼梯 BM69.把数字翻译成字符串 方法一:迭代相加(推荐使用) 知识点:动态规划 动态规划算法的基本思想是:将待求解的问题分解成
展开全文
未来0116
发表于 2021-06-18 13:16:46
精华题解
一.题目描述有n级台阶,青蛙每一次可以跳上去1级台阶或者2级台阶,问有多少种跳法?二.算法1(利用数组求)我们可以通过推理来找出。第3位可以由第1阶台阶跳2阶或第2阶段跳1阶段得出。第4位可以由第2阶台阶跳2阶或第3阶段跳1阶段得出。第5位可以由第3阶台阶跳2阶或第4阶段跳1阶段得出。......最
展开全文
牛客313925129号
发表于 2021-07-16 15:16:27
精华题解
对于第n个台阶,要么从第n-1个台阶一步跨过来,要么从第n-2个台阶一步跨过来(从第n-2个台阶先走一个台阶再走一个台阶的情况,包含在了从第n-1个台阶走一个台阶的情况中了)。所以说有f(n)=f(n-1)+f(n-2),边界值为f(1)=1,f(2)=2。此时,跳台阶问题可以完全转化为斐波那契数列
展开全文
Veggie
发表于 2020-02-27 23:02:54
题目来源:牛客网-剑指Offer专题题目地址:跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 题目解析 这是一道经典的递推题目,你可以想如果青蛙当前在第n级台阶上,那它上一步是在哪里呢? 显然,由于它可以跳1
展开全文
jalr4ever
发表于 2019-08-05 21:40:40
迭代 本质上还是斐波那契数列,所以迭代也可以求 当成 dp 问题来想的话:首先分析问题,它最终解是由前面的解累积起来的解,如何缩小问题的规模? 首先可知,第一阶有只能一步,一种;,第二阶可以两次一步、一次两步两种 若楼梯阶级 n = 3 跳 2 步到 3:剩下的是第一步没跳,起始跳到第一步只有一种
展开全文
̯͡↗Captain⚡
发表于 2019-08-19 21:43:47
思路:跳n级台阶相当于n-1和n-2级台阶的和原因:n级台阶就相当于n-1级再跳一次一阶的和n-2级再跳一次2阶的 语言:javascript: function jumpFloor(number) { //这里写的越高递归的时候调用栈就越小,但是越多的话,多写的那部分效果就越打折扣。好比是消除
展开全文
Oh~Sunny
发表于 2020-01-02 20:41:15
解释:我们把n级台阶时的跳法看成n的函数,记为f(n)。当n>=2时,第一次跳的时候有两种不同的选择: 第一次跳1级,此时跳法的数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1); 第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2)。因此,n级台阶的不同
展开全文
数据结构和算法
发表于 2021-03-21 12:36:03
1,递归的写法 这题我们可以参照之前分析的青蛙跳台阶问题,其实原理是完全一样的我们来分析一下: 当n等于1的时候,只需要跳一次即可,只有一种跳法,记f(1)=1 当n等于2的时候,可以先跳一级再跳一级,或者直接跳二级,共有2种跳法,记f(2)=2 当n等于3的时候,他可以从一级台阶上跳两步上来,也
展开全文
不是江小白
发表于 2021-08-02 21:01:35
1. 解题思路之暴力分析法 由于题目要求一次只能跳 1个台阶或 2个台阶,所以我们可以暴力画出青蛙🐸从1阶到5阶的跳法来寻找规律,下面看图: 青蛙遇到1个台阶的时候,只有一种跳法: 青蛙遇到2个台阶的时候,有两种跳法: 青蛙遇到3个台阶的时候,有三种跳法: 青蛙遇到 4个台阶的时候,有五种
展开全文
4thirteen2one
发表于 2022-07-23 14:42:43
感觉这道题相比NC65 斐波那契数列,更适合拿来当作动态规划的入门训练题,因为相比 Fibonacci 数列已经给好了递推公式,这道题需要自己从实际问题中抽象出问题模型,虽然最终抽象出来还是 Fibonacci 数列哈。 下面是过程分析。 已知: 爬到第 1 阶,只可能也只用爬 1 阶就能完成,共
展开全文
许愿_offer++
发表于 2019-07-31 00:15:55
另一种形式的斐波那契 public class Solution { public int JumpFloor(int target) { if (target==1 || target==0){  
展开全文
牛客342984503号
发表于 2021-09-19 16:17:04
不用递归的写法,因为递归会有大量重复计算。 function jumpFloor(number) { const results = []; results[1] = 1; results[2] = 2; if(number>2){ for(va
展开全文
永远爱吃甜品
发表于 2020-01-22 21:35:41
剑指Offer——青蛙跳台阶问题 递归和循环 题目1:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。? 答题思路1、如果只有1级台阶,那显然只有一种跳法2、如果有2级台阶,那么就有2种跳法,一种是分2次跳。每次跳1级,另一
展开全文
问题信息
动态规划
记忆化搜索
递归
难度:
2353条回答
3692收藏
189669浏览
热门推荐
通过挑战的用户
查看代码
牛客97646...
2023-03-11 09:45:28
Avacado~
2023-03-05 11:49:02
章思思
2023-02-10 10:00:21
牛客30382...
2022-12-21 11:56:14
想熬夜的少年a...
2022-12-11 14:28:21
相关试题
执行完下列语句段后,i值为()
递归
评论
(16)
无源晶振起振电容容量选择方法
元器件
评论
(1)
如果让你策划设计一个影片评论功能的...
竞品研究
评论
(1)
手写代码:循环链表插入元素
评论
(1)
计算二元分类的Jaccard指数
机器学习
评论
(1)
跳台阶
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ public int jumpFloor (int number) { // write code here } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ int jumpFloor(int number) { // write code here } };
#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param number int整型 # @return int整型 # class Solution: def jumpFloor(self , number ): # write code here
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ public int jumpFloor (int number) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ function jumpFloor( number ) { // write code here } module.exports = { jumpFloor : jumpFloor };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param number int整型 # @return int整型 # class Solution: def jumpFloor(self , number: int) -> int: # write code here
package main import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ func jumpFloor( number int ) int { // write code here }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ int jumpFloor(int number ) { // write code here }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param number int整型 # @return int整型 # class Solution def jumpFloor(number) # write code here end end
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ def jumpFloor(number: Int): Int = { // write code here } }
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ fun jumpFloor(number: Int): Int { // write code here } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ public int jumpFloor (int number) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ export function jumpFloor(number: number): number { // write code here }
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ func jumpFloor ( _ number: Int) -> Int { // write code here } }
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param number int整型 * @return int整型 */ pub fn jumpFloor(&self, number: i32) -> i32 { // write code here } }
2
2
7
21