class Solution {
public:
int fib(int n) {
//取模
int MOD=1000000007;
if(n<2){
return n;
}
int f0=0;
int f1=1;
for(int i=2;i<=n;i++){
int sum=(f0+f1)%MOD;
f0=f1;
f1=sum;
}
return f1;
}
};
class Solution {
public int fib(int n) {
final int MOD = 1000000007;
if(n<=1){
return n;
}
int first = 0;
int second = 1;
for(int i=2;i<=n;i++){
int temp = first+second;
first = second;
second = temp%MOD;
}
return second;
}
}
时间复杂度:O(n)
空间复杂度:O(1)
需要注意题意里的取模部分,给我恶心坏了
class Solution {
private:
int mod = 1000000007;
public:
int fib(int n) {
if(n<=1)return n;
int p=0,q=0,r=1;
for(int i=2;i<=n;i++)
{
p = q;
q = r;
r = (p+q)%mod;
}
return r;
}
};
共以下 6 个回答
时间复杂度O(n),空间复杂度O(1)
class Solution {
public int fib(int n) {
if(n 0) return 0;
if(n 1) return 1;
int num1 = 0;
int num2 = 1;
int sum = 0;
for(int i = 0; i <= n – 2; i++){
sum = (num1 + num2) % 1000000007;
num1 = num2;
num2 = sum;
}
return sum;
}
}
//时间复杂度On
//空间复杂度O1
时间复杂度:O(n)
空间:O(1)
“`c++
class Solution {
public:
const int mod = 1000000007;
int fib(int n) {
if (n <= 1) return n; int f0 = 0, f1 = 1, f2; for (int i=2; i<=n; i++) { f2 = (f0 + f1) % mod; f0 = f1; f1 = f2; } return f2; } }; ```