Leetcode509. 斐波那契数

509. 斐波那契数

斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

\(F(0) = 0,F(1) = 1\)?
\(F(n) = F(n - 1) + F(n - 2),其中 n > 1\)?

给你 n ,请计算 F(n) 。

题意概述:求给定斐波拉契数列第n项。

解题报告:

根据斐波拉契数列的递推表达式\(F(n) = F(n - 1) + F(n - 2)\)?,很自然可以想到可以定一个一个长度为\(n\)的数组,再对数组初始化之后,利用循环对数组进行递推处理,即可得到要求的\(f_n\)

但是上述做法空间复杂度过高,所以采用滚动数组通过进行数据迭代免去对数组的定义,减小空间复杂度。

tips:要注意到\(n\)的取值范围是\(0\)开始的,所以在最后返回值的时候要对\(0\)进行判断。

class Solution {
public:
    int fib(int n) {
        int tmp1=0,tmp2=1;
        for (int i=2;i<=n;i++){
            tmp2=tmp1+tmp2;
            tmp1=tmp2-tmp1;
        }
        return n?tmp2:0;
    }
};

Leetcode509. 斐波那契数

上一篇:Salesforce的V2MOM工作法


下一篇:csv文件在打开状态下如何成功读写数据并且不会报错