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;
}
};