博客
关于我
2020-05-26-力扣刷刷4-面试题10- I. 斐波那契数列
阅读量:331 次
发布时间:2019-03-04

本文共 1106 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

题解一:
动态规划

按照斐波那契数列的数列定义写就行了
1.如果n=0,返回0即可。如果不单独考虑,那么给数组分配空间时会出错。
2定义长度为n+1的数组dp
3.初始化前两个值分别为0,1
4.对于索引i从2到n+1,建立循环:
dp[i]=(dp[i-1]+dp[i-2]) % 1000000007

时间复杂度:O(n),一个循环所用的时间
空间复杂度:O(n),数组dp所占用的空间

python:

class Solution(object):    def fib(self, n):        """        :type n: int        :rtype: int        """        if n==0:           return 0        import numpy as np        dp=np.zeros(n+1,dtype=int)        dp[0]=0        dp[1]=1        for i in range(2,n+1):            dp[i]=(dp[i-1]+dp[i-2]) % 1000000007        return dp[n]

题解二:

动态规划,简化上一题解的空间复杂度

由于dp列表第i项只与第i-1项和第i-2项有关,因此只需初始化三个整型变量sum,a,b,利用辅助变量sum使a,b两数字交替前进即可。sum代表第i项值,a代表第i-1项值,b代表第i-2项值

时间复杂度:O(n),一个循环所用的时间
空间复杂度:O(1),变量sum,a,b所占用的常数空间
java:

class Solution {       public int fib(int n) {           int a=0,b=1,sum;        for(int i=0;i<n;i++){           sum=(a+b)%1000000007;        a=b;        b=sum;        }        return a;    }}

python:

class Solution(object):    def fib(self, n):        """        :type n: int        :rtype: int        """        a,b=0,1        for _ in range(n):            a,b=b,a+b        return a%1000000007

转载地址:http://phrh.baihongyu.com/

你可能感兴趣的文章
omnet++
查看>>
23种设计模式一:单例模式
查看>>
Qt中的析构函数
查看>>
C语言实现dijkstra(adjacence matrix)
查看>>
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
查看>>
【单片机开发】智能小车工程(经验总结)
查看>>
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
查看>>
C++&&STL
查看>>
子集(LeetCode 78)
查看>>
微信js-sdk使用简述(分享,扫码功能等)
查看>>
mxsrvs支持thinkphp3.2伪静态
查看>>
c++中ifstream及ofstream超详细说明
查看>>
vuex modules
查看>>
sleep、wait、yield、join——简介
查看>>
web项目配置
查看>>
基于单片机简易信号误差分析设计-全套资料
查看>>
基于单片机简易脉搏测量仪系统设计-毕设课设资料
查看>>
Javascript中String支持使用正则表达式的四种方法
查看>>
eclipse引用sun.misc开头的类
查看>>
Servlet2.5的增删改查功能分析与实现------删除功能(四)
查看>>