首页 > 其他 > 详细

[剑指offre]斐波那契数列

时间:2019-08-04 11:43:33      阅读:93      评论:0      收藏:0      [点我收藏+]

时间限制:1秒 空间限制:32768K 

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

n<=39

思路:递归,然后出(bu)人(chu)意料的超时了,那就直接记录下当之前的每一项,直接递推到第n项。

solution1:

 1 class Solution {
 2 public:
 3     int Fibonacci(int n) {
 4       int *p = new int[n+1]();
 5       p[0]=0,p[1]=1;
 6       for(int i = 2;i<=n;i++)
 7       {
 8         p[i] = p[i-1]+p[i-2];
 9       }
10       return p[n];
11     }
12 };

思考:这样需要额外较大的空间复杂度O(n),其实实际影响当前值的只有两项,因此可以简化空间复杂度。

solution2:

 1 class Solution {
 2 public:
 3     int Fibonacci(int n) {
 4       int first = 0,second =1;
 5       while(n--)
 6       {
 7         second = first + second;
 8         first  = second - first;
 9       }
10       return first;
11     }
12 };

思考:额外的空间复杂度O(1)

[剑指offre]斐波那契数列

原文:https://www.cnblogs.com/Swetchine/p/11296987.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!