力扣 509 斐波那契數

2022-05-19 17:53:07 字數 1156 閱讀 6977

斐波那契數,通常用 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

示例 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

1.暴力破解:

public

int fib(int

n)

if(n == 1)

return fib(n-1) + fib(n-2);

}

時間複雜度為o(n^2)

存在什麼問題?大量的重複計算

2.減少重複計算,可以在利用空間換時間,比如增加乙個map記錄每個數字對應的實際的value是多少,已經存在的資料就直接從map中取

3.另外也可以使用動態規劃的方式,動態規劃跟暴力破解的區別就是乙個從上向下查詢,而動態規劃是從下向上

public

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;

}

時間複雜度為o(n) ,空間複雜度o(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 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...