剑指offer 斐波那契系列

目录

  • T9-斐波那契用迭代
  • 跳台阶
    • 动规 py2
  • 变态跳台阶
    • wo的初始迭代方法
    • 数学--移位 py2
  • 矩形覆盖
    • 动规 Py2

T9-斐波那契用迭代

跳台阶

动规 py2

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor(self, number):
        # write code here
        if number<0:
            return -1
        if number <=2:
            return number
        a,b=1,2
        res = 0
        for i in range(3,number+1):
            res = a+b
            a,b = b,res
        return res

变态跳台阶

wo的初始迭代方法

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
        if number<0:
            return -1
        res = [0,1]
        for i in range(2,number+1):
            res.append(sum(res)+1)
        return res[number]

数学--移位 py2

调到第n级台阶,前面的(n-1)级有跳与不跳两种选择吗,故答案为2^(n-1),并且用移位运算代替乘法运算来优化。

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
        if number<=0:
            return -1
        res = 1
        return res<<(number-1)

矩形覆盖

动规 Py2

# -*- coding:utf-8 -*-
class Solution:
    def rectCover(self, number):
        # write code here
        if number<0:
            return -1
        if number<=2:
            return number
        a,b=1,2
        res=0
        for i in range(3,number+1):
            res = a+b
            a ,b = b,res
        return res

原文地址:https://www.cnblogs.com/yxl-2018/p/12395396.html

时间: 2024-10-01 09:39:49

剑指offer 斐波那契系列的相关文章

剑指offer斐波那契数列python

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 思路 斐波那契数列,即第n项为第n-1项和n-2项的和,可用递归,但复杂度高.直接用一个数组保存之前的项即可. 代码 1 # -*- coding:utf-8 -*- 2 class Solution: 3 def Fibonacci(self, n): 4 ans = [0,1,1,2] 5 while n > len(ans) - 1: 6 ans.append(a

[剑指OFFER] 斐波那契数列- 跳台阶 变态跳台阶 矩形覆盖

跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. class Solution { public: int jumpFloor(int number) { if(number == 1) return 1; if(number == 2) return 2; int n1 = 1; int n2 = 2; int rtn = 0; for(int i = 3; i <= number; i++) { rtn = n1 + n2; n1 = n2;

剑指offer7: 斐波那契数列第n项(从0开始,第0项为0)

1. 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 2. 思路和方法 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1.1.2.3.5.8.13.21.34.……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1

剑指Offer07 斐波那契数列

1 /************************************************************************* 2 > File Name: 07_Fibonacci.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月29日 星期一 20时23分54秒 6 *****************************************

4.1 斐波那契系列问题的递归和动态规划

[题目]: 给定整数N,返回斐波那契数列的第N项 [补充题目1]: 给定整数N,代表台阶数,一次可以跨2个或者1个台阶,返回有多少种走法 举例: N=3,可以三次都跨1个台阶:也可以先跨2个台阶,再跨1个台阶:还可以先跨1个台阶,再跨2个台阶.所以有三种走法,返回3 [补充题目2]: 假设农场中成熟的母牛每年只会生1头小母牛,并且永远不会死.第一年农场有1只成熟的母牛,从第二年开始,母牛开始生小母牛.每只小母牛3年之后成熟又可以生小母牛.给定整数N,求出N年后牛的数量 举例: N=6, 第1年1

动态规划(斐波那契系列)---爬楼梯

动态规划 ??递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保留了子问题的解,避免了重复计算. 爬楼梯 70. Climbing Stairs (Easy) 题目描述: ??有 N 阶楼梯,每次可以上一阶或者两阶,求有多少种上楼梯的方法. 思路分析: ??定义一个dp数组存储上楼梯的方法数,dp[i]表示走到第i层楼的方法数,第i层楼梯可以从第i-1层和i-2个楼梯再走一步到达.那么走到第i层楼梯的方式为走到第i-1层的方式和第i-2层的方式和. dp[ i

牛客网上的剑指offer题目

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 题目:请实现一个函数,将一个字符串中的空格替换成"%20" 两种方法实现:输入一个链表,从尾到头打印链表每个节点的值 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 剑指offer 斐波那契数列 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个

剑指offer系列源码-斐波那契数列

题目1387:斐波那契数列 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5415解决:1603 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.斐波那契数列的定义如下: 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出第n项斐波那契数列的值. 样例输入: 3 样例输出: 2 #include<iostream> #include<stdio.h&g

剑指offer系列4:斐波那契数列

剑指offer第九题,这个题很古老了.第一个想到的肯定是递归,很简单. 1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 class Solution { 5 public: 6 int Fibonacci(int n) { 7 if (n == 0) 8 { 9 return 0; 10 } 11 if (n==1||n==2) 12 { 13 return 1; 14 } 15 else 16 {