zoukankan      html  css  js  c++  java
  • [剑指offre]斐波那契数列

    时间限制: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)

  • 相关阅读:
    jsp数据交互二
    jsp数据交互(一)
    JQuery操作DOM
    事件和动画
    Jquery选择器
    Optional容器(jdk1.8)
    java常见集合笔记
    字符串内存占用图解
    单例设计模式
    代码块
  • 原文地址:https://www.cnblogs.com/Swetchine/p/11296987.html
Copyright © 2011-2022 走看看