思路
经典迭代永不过时,但题目要求在数据过大时采用取模1e+7 的思路来保证结果不会溢出,会有一些耗时,所以我们可以在循环迭代的过程中对大于1e+7返回值进行 -=1e+7
操作来减少耗时,具体可看代码
代码
class Solution {
public int fib(int n)
{
if (n == 0 || n == 1)
{
return n;
}
int f0 = 0, f1 = 1, f2 = f0 + f1;
while (n > 2)
{
f0 = f1;
f1 = f2;
f2 = f1 + f0;
if (f2 >= 1000000007)
{
f2 -= 1000000007;
}
n--;
}
return f2;
}
}