【leetcode】509. Fibonacci Number

problem

509. Fibonacci Number

 solution1: 递归调用

class Solution {
public:
    int fib(int N) {
        if(N<2) return N;
        return fib(N-1) + fib(N-2);
    }
};

solution2: 结果只与前两个数字有关。

class Solution {
public:
    int fib(int N) {
        if(N<2) return N;
        int a = 0;
        int b = 1;
        int sum =0;
        for(int i=2; i<=N; i++)//err...
        {
            sum = a + b;
            a = b;
            b = sum;
        }
        return sum;
    }
};

solution3: 使用数组类型数据。

 但是不知道哪里有问题,为什么一直没有通过。。。哪位大神看到知道原因的麻烦告知一下下哈~

/*error...
class Solution {
public:
    int fib(int N) {
        vector<int> dp(N + 1);
        dp[0] = 0; dp[1] = 1;
        for (int i = 2; i <= N; ++i) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[N];
    }
};
*/
/*error。。。
class Solution {
public:
    int fib(int N) {
        //int f[N+1] = {0};
        vector<int> f(N+1);
        f[0] = 0;
        f[1] = 1;
        for(int i=2; i<=N; i++)
        {
            f[i] = f[i-1] + f[i-2];
        }
        return f[N];
        
    }
};
*/

参考

1. Leetcode_509. Fibonacci Number;

2. GrandYang;

原文地址:https://www.cnblogs.com/happyamyhope/p/10925643.html