解题思路

本题为简单模拟题,按题给条件进行n次模拟即可。当然也有打表和公式的O(1)解法。

代码

class Solution {
public:
    int fib(int n) {
        if(n==0) return 0;//如果n为0,返回0
        int a = 1;//f(n-1)
        int b = 1;//f(n-2)
        int ans = 1;
        for(int i = 3; i <= n; i++){
            ans = a + b; f(n) = f(n-1) + f(n-2)
            a = b;//更新f(n-2)
            b = ans;//更新f(n-1)
        }
        return ans;//返回答案
    }
};

复杂度分析

时间复杂度: O(n)。

空间复杂度: O(1)。