leetcode 509 斐波那契数

前言

题目:509. 斐波那契数

参考题解:斐波那契数-代码随想录


提交代码

拿到这道题目,直接使用递归通过。

class Solution {
public:
    int fib(int n) {
        if(n ==0)
            return 0;
        if(n == 1)
            return 1;
        return fib(n-1) + fib(n-2);
    }
};

上面的递归过程,是树状展开,存在重复计算。为了避免重复,我们也可以从前向后推导。

class Solution {
public:
    int fib(int n) {
        if(n==0)
            return 0;
        if(n==1)
            return 1;

        vector<int> dp(n+1,0);
        dp[0]=0,dp[1]=1;
        for(int i=2; i<=n; i++){
            dp[i] = dp[i-1] + dp[i-2];
        }

        return dp[n];
    }
};
上一篇:509.斐波那契数——记录(C++)


下一篇:剑指Offer(10-1)斐波拉契数列