斐波那契數,通常用 f(n) 表示,形成的序列稱為 斐波那契數列 。該數列由 0 和 1 開始,後面的每一項數字都是前面兩項數字的和。也就是:1.暴力破解:f(0) = 0,f(1) = 1
f(n) = f(n - 1) + f(n - 2),其中 n > 1
給你 n ,請計算 f(n) 。
示例 1:
輸入:2
輸出:1
解釋:f(2) = f(1) + f(0) = 1 + 0 = 1
示例 2:
輸入:3
輸出:2
解釋:f(3) = f(2) + f(1) = 1 + 1 = 2
示例 3:
輸入:4
輸出:3
解釋:f(4) = f(3) + f(2) = 2 + 1 = 3
0 <= n <= 30
public時間複雜度為o(n^2)int fib(int
n)
if(n == 1)
return fib(n-1) + fib(n-2);
}
存在什麼問題?大量的重複計算
2.減少重複計算,可以在利用空間換時間,比如增加乙個map記錄每個數字對應的實際的value是多少,已經存在的資料就直接從map中取
3.另外也可以使用動態規劃的方式,動態規劃跟暴力破解的區別就是乙個從上向下查詢,而動態規劃是從下向上
public時間複雜度為o(n) ,空間複雜度o(1)int fib(int
n)
//f(1) = 1;
//f(0) = 0;
//f(2) = f(1) + f(0) = 1
//f(3) = f(2) + f(1) = 2
//f(4) = f(3) + f(2) = 3
int preresult = 1,result = 1;
for(int i = 3 ; i <= n; i++)
return
result;
}
力扣日記 509 斐波那契 經典
斐波那契數,通常用 f n 表示,形成的序列稱為斐波那契數列。該數列由 0 和 1 開始,後面的每一項數字都是前面兩項數字的和。也就是 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.給定 n,計算 f n class solution import functools fun...
509 斐波那契數
斐波那契數,通常用 f n 表示,形成的序列稱為斐波那契數列。該數列由 0 和 1 開始,後面的每一項數字都是前面兩項數字的和。也就是 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.給定 n,計算 f n 示例 1 輸入 2 輸出 1 解釋 f 2 f 1 f 0 1 0 1...
509 斐波那契數
斐波那契數,通常用 f n 表示,形成的序列稱為斐波那契數列。該數列由 0 和 1 開始,後面的每一項數字都是前面兩項數字的和。也就是 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.給定 n,計算 f n 示例 1 輸入 2 輸出 1 解釋 f 2 f 1 f 0 1 0 1...