题解 | #斐波那契数列#

斐波那契数列

https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3

class Solution {
public:
    int f[50] = {0};
    int Fibonacci(int n) {
        if (n <= 2) return 1;
        if (f[n] > 0) return f[n];   //递归 + 记忆化搜索,时间O(n),只算了f[1到n],没有重复计算,空间复杂度O(n),栈深度为n
        return f[n] = (Fibonacci(n-1)+Fibonacci(n-2));
    }
};
/*class Solution {
public:
    int Fibonacci(int n) {
        if (n<=2) return 1;
        return Fibonacci(n-1) + Fibonacci(n-2);
    }
//递归法:时间复杂度:O(2^n) 空间复杂度O(n);
};*/
/*
    int Fibonacci(int n) {
        // write code here
        vector<int>dp(n + 1, 0);
        dp[1] = 1;
        dp[2] = 1;
        for (int i = 3; i <= n; i++){
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n];
    }
};
//动态规划:时间复杂度:O(n) 空间复杂度:O(n) 
*/
/*
int Fibonacci(int n) {
        if (n == 1 || n == 2){
            return 1;
        }
        // write code here
        int a = 1;  //状态压缩
        int b = 1;
        int tmp;
        for (int i = 3; i <= n; i++){
            tmp = a + b;
            a = b;
            b = tmp;
        }
        return tmp;
    }
//动态规划 + 状态压缩:时间复杂度:O(n) 空间复杂度:O(1)
*/

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务