变态跳台阶 时间限制:1秒空间限制:32768K 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法.   分析一下明天是个斐波那契数列,我们一步一步退出其通项公式.   设台阶数为n, 总跳法为jumps   n          jumps 1 1 2 2 3 4 4 8 5 16   现在猜测其通项公式为 fbonicc(n) = 2 * fbonicc(n - 1)   列出4的全部跳法 5的全部跳法 1111 1111…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法.   其实就是斐波那契数列问题. 假设f(n)是n个台阶跳的次数. f(1) = 1 f(2) 会有两个跳得方式,一次1阶或者2阶,这回归到了问题f(1),f(2) = f(2-1) + f(2-2) f(3) 会有三种跳得方式,1阶.2阶.3阶,那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下f(3-2):第一次3阶,那么剩下f(3-3).因此结论是f(3)…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 问题分析 由于每次跳的阶数不确定,没有一个固定的规律,但是可以了解的是后一次跳是在前一次跳的结果上累加的,因此我们可以考虑使用递归的方法来解决问题. 那么从递归的三个步骤开始寻找解决方案: 1. 递归截止条件. 由于每次可以跳1-n的任意阶数,因此无论有多少阶,都可以一次跳完,为了表示方便,我们将一次性跳完的情况设为F(0),当n=1时,只能有一种情况,F(1) = 1.当n…
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 牛客网链接 思路 假设青蛙跳上一个n级的台阶总共有f(n)种跳法. 现在青蛙从第n个台阶往下跳,它可以跳到任意一个台阶上,所以: f(n)=f(n-1)+f(n-2)+...+f(1) f(n-1)=f(n-2)+f(n-3)+...f(1) 将f(n-2)+...+f(1)替换为f(n-2) f(n)=2f(n-1) js代码 function jumpFloorII(number)…
本题来自<剑指offer> 跳台阶 题目1: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路: 同上一篇. C++ Code: class Solution { public: int jumpFloor(int number) { ; ; ; ;i<=number;i++){ floor = one + two; one = two; two = floor; } return floor; } }; Pyt…
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路 这题关键点在于要将问题分解: 因为青蛙每次跳1步或者2步,故跳上第n级台阶时只有两种可能,1.青蛙从n-1级台阶直接跳上来,2.青蛙从n-2级台阶直接跳上来. 这样一来就可以将能够写出状态转移式:f[n]=f[n-1]+f[n-2],对斐波那契数列熟悉的同学会发现和斐波那契数列问题的状态…
[剑指Offer]反转链表 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 输入一个链表,反转链表后,输出链表的所有元素. Ways 这个题就是[LeetCode]Reverse Linked List 解题报告这个题.思路也一样. 用temp保存pHead的下一个节点.用newHead保存新的节点的开头.然后把pHead.next只想newHead,再移动一下 三个…
[剑指Offer]矩阵覆盖 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? Ways 还是费布拉奇数列.主要是明白这个思想呀-递推公式很简单. # -*- coding:utf-8 -*- class Solution: def __ini…
[剑指Offer]扑克牌顺子 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)-他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!"红心A,黑桃3,小王,大王,方片5","Oh My God!&…
[剑指Offer]丑数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 解题方法 第一感觉肯定是把每个数字逐个遍历判断是否是丑数的方式,这样的话效率不高. 比较巧妙的方式是使用空间换时间.我们…
[剑指Offer]序列化二叉树 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 请实现两个函数,分别用来序列化和反序列化二叉树 解题方法 同样是LeetCode的原题,这里再复习一遍.采用Leetcode的官方序列化二叉树的方式,采用#表示空节点,树的前序遍历表示这个树.解序列化需要用一个队列. 代码: # -*- coding:utf-8 -*- # class Tr…
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路: n<=0时,有0种跳法 n=1时,只有一种跳法 n=2时,有两种跳法 已知当n>2时,当最后一次跳1级台阶,则之前有f(n-1)种跳法,当最后一次跳2级台阶时,之前有f(n-2)种跳法,即f(n)=f(n-1)+f(n-2); 故此处采用递归的方法 递归(英语:recursion)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法. publ…
首先说一个剪枝的概念: 剪枝出现在递归和类递归程序里,因为递归操作用图来表示就是一棵树,树有很多分叉,如果不作处理,就有很多重复分叉,会降低效率,如果能把这些分叉先行记录下来,就可以大大提升效率——这就是剪枝技巧.他的做法和动规很像(将状态保存起来,用空间换时间),就是在递归的过程中把出现的状态存储下来 具体见代码: source code(跳台阶): package niuke; public class 跳台阶 { public static int Solution1(int i,int…
基础跳台阶 题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路 这道题就是斐波那契数列的变形问法,因为跳上第N个台阶有两种方式,第一个就是从第N-1个台阶上跳一级上来,第二个就是从第N-2个台阶上跳两级上来. 那么求到第N个台阶的方法就转变成求到第N-1台阶的办法和到第N-2个台阶的方法,将两者相加即可,所有f(n)=f(n-1)+f(n-2),唯一一点区别在于初始值,这里的初始值是 f(1) = 1;f(2)=…
该题目来源于牛客网<剑指offer>专题. 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 1阶:共1种跳法: 2阶:共2种跳法: 3阶:共3种跳法: n阶:先跳1级,还剩n-1级,跳法是f(n-1):先跳2级,还剩n-2级,跳法是f(n-2),共f(n-1)+f(n-2)种跳法: 得出一个斐波那契函数. Go语言实现: 方法一:递归 func jumpFloor(N int) int { if N <= 0 { r…
这题之前刷leetcode也遇到过,感觉是跟斐波拉契差不多的题. 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路: 这类题一般就是用递归思想,先考虑跳一级台阶情况,再是两级.发现由于跳台阶的选择只有1级和2级,所以其实跳n级台阶就是跳n-1级和n-2级的和. 本科做斐波拉契用递归时已经知道会超时,由于分别计算f(n-1)和f(n-2)实际是重复计算了,所以用数组去存每次的计算结果,直接调用就可以. 代码…
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 考点: 递归和循环 思路: 1)利用二叉树,左孩子为跳一级,右孩子为跳两级,直到剩余台阶数为0,即叶子节点为0,计算为0的叶子节点数量,即跳法数量(该方法不可取,当台阶数足够大时,空间复杂度太大) 2) 跳台阶符合斐波那契数列规律:跳法[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...] 证明: 记 Fb(i) 为斐波那契数列第 i 项的值…
题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题方法 数学归纳法可以得出这个题的结果是2的n-1次方. 来自牛客网的回答: 链接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 来源:牛客网 关于本题,前提是n个台阶…
一.题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 二.输入描述 输入n级台阶 三.输出描述 输出总有多少种不同跳法 四.牛客网提供的框架 class Solution { public: int jumpFloor(int number) { } }; 五.解题思路 动态规划 六.代码 class Solution { public: int jumpFloor(int number) { if(number <= 2) return nu…
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 5 样例输出: 8 题目分析: 这道题很明显正向分析是不行的,也就是说,最后面的一个台阶,要依赖于前面台阶的.所以,最后一个台阶的方法数目可以由前面计算出来.那么,仔细想一下,一个青蛙只能跳1-2步,也就是说,…
(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法. //递归方式  public static int f(int n) { //参数合法性验证 if (n < 1) { System.out.println("参数必须大于1!"); System.exit(-1); } if (n == 1 || n == 2) return 1; else return f(n - 1) + f(n - 2); } //非递归方式  pu…
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. (斐波那契数列的变形) F(1)=1;F(2)=2; F(n)=F(n-1)+F(n-2); class Solution { public: int jumpFloor(int number) { ) ; ||number==) return number; )+jumpFloor(number-); } }; 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 题目地址 https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4?tpId=13&tqId=11161&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 思路 首先我们考虑最…
一.题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 二.思路: 同斐波那契数列. 三.代码:    …
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). java版本: public class Solution { public static void main(String[] args){ long startTime=System.currentTimeMillis(); System.out.println("第30项的结果是:"+JumpFloor(30)); long endTime=System.cur…
本文算法使用python3实现 1. 问题1 1.1 题目描述:   一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.   时间限制:1s:空间限制:32768K 1.2 思路描述:   (1)当 $ n=0 $ 时,返回0   (2)当 $ n=1 $ 时,只有一种跳法:跳1级台阶.   (3)当 $ n=2 $ 时,有两种跳法:(a) 跳1级再跳1级:(b) 直接跳2级.   (4)当 $ n=3 $ 时,我们只考虑最后一步的情况:(a)当最后一步只…
 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. [思路]与斐波那契数列类似 class Solution { public: int jumpFloor(int number) { ] = {}; res[] = ; res[] = ; ;i < number;i ++){ res[i] = res[i - ] + res[i - ]; } ]; } };…
WA了一次,错误数据4,输出8,怎么真么熟悉呢?改个return过了,OMG ---------------------------------------------------------------------------------------- 时间限制:1秒 空间限制:32768K 热度指数:290829 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. class Solution { public: int…
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设我们要求跳上第3级的跳法,可以从第0级跳3级台阶到达,也可以从第1级跳2级台阶到达,还可以从第2级跳1级到达. 所以跳上第3级的跳法数等于到达第0级的跳数加上到达第1级的跳数再加上到达第2级的跳数,也就是f(3) = f(2) + f(1) + f(0) 可以推导出f(n) = f(n-1) + f(n-2) + ... + f(2) + f(1) + f(0) 我…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法.   题解: 纯找规律题:   class Solution { public: int jumpFloorII(int number) { ); , number - ); } };…