码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode 366 Fibonacci

时间:2016-12-19 08:47:39      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:and   ace   declare   ext   ntc   pac   class   pre   one   

/* 1st method will lead to time limit */
/* the time complexity is exponential sicne T(n) = T(n-1) + T(n-2) */

 

class Solution {
    /**
     * @param n: an integer
     * @return an integer f(n)
     */
    public int fibonacci(int n) {
        // write your code here
        if (n == 1 || n == 2) {
            return (n-1);
        }
        
        // int sum = (n-1) + (n-2);
        
        return fibonacci(n-1) + fibonacci(n-2);
        
    }
}

 

/* 2nd method will need O(n) space, using DP */
/* T and S are both O(n) */

 1 public int fibonacci(int n) {
 2         // declare an array to store the result
 3         // it has to be n+2 to avoid out_of_bound
 4         int[] f = new int[n+2]; 
 5         f[1] = 0; // when input is 1 => zero
 6         f[2] = 1; // when input is 2 => 1
 7         
 8         int i = 3;
 9         while (i <= n) { // it has to be incremental instead of decremental
10             f[i] = f[i-1] + f[i-2];
11             i++;
12         }
13         
14         return f[n];
15     }

 

/* 3rd method will only need O(1) space */
/* We can optimize the space used in method 2 by storing the previous two numbers only */
/* because that is all we need to get the next Fibannaci number in series. */

 1 public int fibonacci(int n) {
 2     if (n < 3) return n-1;
 3      
 4     int first = 0;
 5     int second = 1;
 6     int third = 1;
 7     
 8     int i = 3;
 9     while (i <= n) {
10         third = first + second;
11         first = second;
12         second = third;
13         i++;
14     }
15     return third;
16 }

 

LintCode 366 Fibonacci

标签:and   ace   declare   ext   ntc   pac   class   pre   one   

原文地址:http://www.cnblogs.com/wenchan/p/6196138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!