Go语言实现:【剑指offer】跳台阶】的更多相关文章

跳台阶 时间限制:1秒空间限制:32768K 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.   分析同样为斐波那契数列边形这样的题肯定有公式 设n级台阶,总跳法 jumps n jumps 1 1 2 2 3 3 4 5 5 8 猜测 fbonicc(n) = fbonicc(n-1) + fbonicc(n-2) 3 4 5 111 1111 1111(1) 21  211  211(1) 12  121 121(1) 112 112(1…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.   解题思路: f(n)=f(n-1)+f(n-2); f(1)=1,f(2)=2;   AC代码: class Solution { public: int jumpFloor(int number) { ) ; ||number==) return number; else )+jumpFloor(number-); } };…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路分析 这个问题可以先从简单开始考虑,台阶只有1阶,只有1种跳法,台阶有2阶,有2种跳法:一种两次跳一级:另一种一次跳两级.然后考虑一般情况,当有n级台阶时,将f(n)作为总跳法,第1次跳的时候,可以有两种方法:一是跳一级,此时跳法数目等于后面剩下的n-1级台阶的跳法,即f(n-1);二是跳两级,此时跳法数目等于后面剩下的n-2级台阶的跳法.所以,n级台阶的跳法总数:f(n)=f(n-1)+f…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 牛客网链接 思路 这一题和斐波那契数列思路完全一样. 假如青蛙从第n个台阶开始往下跳,由于青蛙一次可以跳1个台阶,也可以跳2个台阶级,所以…
时间限制:1秒 空间限制:32768K 热度指数:375795 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). class Solution { public: int jumpFloor(int number) { ,b = ; ; i<=number;i++) { int tmp = b; b += a; a = tmp; } return b; } };…
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 实际上就是斐波那契数列的一个应用,青蛙跳上n级台阶的跳法数等于跳上n-1阶的跳法数加上n-2阶的跳法数,因为青蛙可以从n-1阶跳1级到达n阶,也可以从n-2阶跳2级到达n阶,也就是f(n) = f(n-1) + f(n-2). 程序: C++ class Solution { public: int jumpFloor(int number) { ) ; ) ;…
该题目来源于牛客网<剑指offer>专题. 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 找规律: 1阶:1种: 2阶:2种: 3阶:4种: 4阶:8种: n阶:2f(n-1)种: 或者: n-1阶:f(n-2)+f(n-3)+-f(1)+f(0) n阶:f(n-1)+f(n-2)+-f(1)+f(0) => 2f(n-1) 得出一个斐波那契函数. Go语言实现: 方法一:递归 func jumpFloor2(N int)…
该题目来源于牛客网<剑指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…
 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项. 思路 如果直接写递归函数,由于会出现很多重复计算,效率非常底,不采用. 要避免重复计算,采用从下往上计算,可以把计算过了的保存起来,下次要计算时就不必重复计算了:先由f(0)和f(1)计算f(2),再由f(1)和f(2)计算f(3)……以此类推就行了,计算第n个时,只要保存第n-1和第n-2项就可以了.…
面试题9:斐波那契数列及其变形(跳台阶.矩形覆盖) 提交网址: http://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160 参与人数:7267  时间限制:1秒  空间限制:32768K 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项 Fibonacci(int n). 分析: 用递归会TLE,因为有不少地方进行了重复计算,改为循环即可解决(迭代法…
本题来自<剑指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.题目 # 一只青蛙一次可以跳1级台阶,也可以跳2级.求该青蛙跳n级的台阶总共有多少种跳法. 2.思路 # 跳0级,f(0)=0 # 跳1级,一次跳一级一种跳法,f(1)=1 # 跳2级,第一次跳一级和第一次跳两级两种跳法,f(2)=2 # 跳3级,第一次跳一级(剩余两级有f(2)种跳法)和第一次跳两级(剩余一级有f(1)种跳法),f(3)=f(2)+f(1) # 跳n级,第一次跳一级(剩余n-1级有f(n-1)种跳法)…
原创博文,转载请注明出处! # 本文是牛客网<剑指offer>刷题笔记,笔记索引连接 1.题目 # 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 2.思路 # n=0,f(0)=0 # n=1,f(1)=1 # n=2,f(2)=2,{1,1;2} # n=3,f(3)=4,{1,1,1;1,2;2,1;3;} # n=4,f(4)=8,{1,1,1,1;1,1,2;1,2,1;2,1,1;2,2;1,3;3,1;4} 数学归纳…
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路 这题关键点在于要将问题分解: 因为青蛙每次跳1步或者2步,故跳上第n级台阶时只有两种可能,1.青蛙从n-1级台阶直接跳上来,2.青蛙从n-2级台阶直接跳上来. 这样一来就可以将能够写出状态转移式:f[n]=f[n-1]+f[n-2],对斐波那契数列熟悉的同学会发现和斐波那契数列问题的状态…
剑指Offer - 九度1389 - 变态跳台阶2013-11-24 04:20 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=50). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 6 样例输出: 32 题意分析: 跳台阶问题,对于n级台阶,每次都可以跳任意级,问总共有多少种跳法.如果考虑…
剑指Offer - 九度1388 - 跳台阶2013-11-24 03:43 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 5 样例输出: 8 题意分析: 红果果的斐波那契数列题,节操呢?和1387基本一样,这不是重复出题了吗... // 651807 z…
题目 一仅仅青蛙一次能够跳上1级台阶,也能够跳上2级--它也能够跳上n级. 求该青蛙跳上一个n级的台阶总共同拥有多少种跳法. 思路 用Fib(n)表示青蛙跳上n阶台阶的跳法数,设定Fib(0) = 1: 当n = 1 时. 仅仅有一种跳法,即1阶跳,即Fib(1) = 1; 当n = 2 时. 有两种跳的方式,一阶跳和二阶跳,即Fib(2) = Fib(1) + Fib(0) = 2; 当n = 3 时.有三种跳的方式,第一次跳出一阶台阶后,后面还有Fib(3-1)中跳法,第一次跳出二阶台阶后.…
题目:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). f(n) = f(n-1) + f(n-2) 基本思路 这道题在剑指offer中实际是当作递归的反例来说的. 递归的本质是吧一个问题分解成两个或者多个小问题,如果多个小问题存在互相重叠的情况,那么就存在重复计算. f(n) = f(n-1) + f(n-2) 这种拆分使用递归是典型的存在重叠的情况,所以会造成非常多的重复计算. 另外,每一次函数调用爱内存中都需要分配空间,每…
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25337983 剑指offer上的第9题,简单题,在九度OJ上測试通过. 主要注意下面几点: 1.用非递归实现,递归会超时 2.结果要用long long保存,不然会发生结果的溢出.从而得到负值 3.假设是在VC++6.0下编译的,long long是illegal的,要用_int64取代.同一时候输出的转化以字符也要用%I64d取代%lld 时间限制:1 秒 内存限制:32 兆 题目描写…
基础跳台阶 题目 一只青蛙一次可以跳上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)=…
题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1. 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 提示: 0 <= n <= 100 思路 同 [剑指Offer]面试题10- I. 斐波那契数列 代码 时间复杂度:O(n) 空间复杂度:O(1) class Solution { public: int…
剑指 Offer 10- II. 青蛙跳台阶问题 Offer 10- II 题目描述: 动态规划方程: 循环求余: 复杂度分析: package com.walegarrett.offer; import java.util.Map; import java.util.TreeMap; /** * @Author WaleGarrett * @Date 2020/12/6 17:06 */ /** * 这是一道动态规划的题目:题目要求求解总共多少种解法.答案需要取模 1e9+7(10000000…
跳台阶 牛客网 剑指Offer 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). class Solution: #run:26ms memory:5624k def jumpFloor(self, number): if number <= 0: return 0 if number == 1: return 1 if number == 2: return 2 f_1 = 1 f_2 = 2 i = 3 r =…
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 动态规划 日期 题目地址:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:…
所列题目与牛客网<剑指offer>专题相对应. 数组: 和为S的两个数字 和为S的连续正数序列 连续子数组的最大和 数字在排序数组中出现的次数 数组中只出现一次的数字 旋转数组的最小数字 数组中的逆序对 最小的K个数 数组中出现次数超过一半的数字 把数组排成最小的数 数组中重复的数字 滑动窗口的最大值 构建乘积数组 数据流中的中位数 二维数组中的查找 顺时针打印矩阵 扑克牌顺子 调整数组顺序使奇数位于偶数前面 链表: 链表中环的入口结点 删除链表中重复的结点 从尾到头打印链表 两个链表的第一个…
转自:http://www.myexception.cn/program/1973966.html 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2331解决:1332 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=50). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 6 样例输出:…
该题目来源于牛客网<剑指offer>专题. 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7.习惯上我们把1当做是第一个丑数. 求按从小到大的顺序的第N个丑数. Go语言实现: func getUglyNumber(index int) int { //第0-6个丑数,分别是0-6 if index < 7 { return index } ​ i2 := 0 i3 := 0 i5 := 0 //从1开始,1*2,1*3,…
该题目来源于牛客网<剑指offer>专题. 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形.请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 先放21,则f(n-1),先放12,则f(n-2). Go语言实现: func rectCover(n int) int { if n < 1 { return 0 } ​ if n == 1 || n == 2 { return n } ​ return rectCover(n-1) + rectCover(n-2)…
该题目来源于牛客网<剑指offer>专题. 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0) n<=39 Go语言实现: 递归: func fib(N int) int { if N == 0 { return 0 } if N == 1 { return 1 } return fib(N-1) + fib(N-2) } 迭代: func fib(N int) int { if N == 0 { return 0 } if N == 1…
该题目来源于牛客网<剑指offer>专题. 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列.(注意:这两个序列的长度是相等的) Go语言实现: func isPopOrder(push, pop []int) bool { if len(push) == 0 || len(po…