劍指offer 9 斐波那契數列

2021-09-25 05:30:54 字數 833 閱讀 5696

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。

第一種解法不好:會重複計算很多值,時間複雜度以n的指數方式增長

long fibonacci (int n)

優化解法:從下往上計算。見解法二

動態規劃問題:

class solution 

return m;}}

};

矩形覆蓋問題:依舊是斐波那契數列

2*n的大矩形,和n個2*1的小矩形

其中target*2為大矩陣的大小

有以下幾種情形:

1、target <= 0 大矩形為<= 2*0,直接return 1;

2、target = 1大矩形為2*1,只有一種擺放方法,return1;

3、target = 2 大矩形為2*2,有兩種擺放方法,return2;

4、target = n 分為兩步考慮: f(n) = f(n-1) + f(n-2), (n > 2) 

第一次擺放一塊 2*1 的小矩陣,則擺放方法總共為f(target - 1)√√

第一次擺放一塊1*2的小矩陣,則擺放方法總共為f(target-2)

因為,擺放了一塊1*2的小矩陣(用√√表示),對應下方的1*2(用××表示)擺放方法就確定了,所以為f(targte-2)√√

××

class solution 

return s;

}};

劍指Offer9斐波那契數列

寫乙個函式,輸入n,求斐波那契數列的第n項。f 0 0 f 1 1 f n f n 1 f n 2 方法1 遞迴實現 long long fibonacci unsigned int n 方法2 迴圈實現,並且不用陣列來記錄每乙個值,只要記錄最後兩個變數就可以 long long fibonacci...

劍指offer 9 斐波那契數列

求斐波那契數列的第 n 項,n 39。思路解析 兩種方式 1.利用公式求取每乙個f n 的值,並利用乙個n 1的陣列來儲存每乙個f n 的值,此方法空間複雜度為o n 2.利用兩個變數儲存f n 1 和f n 2 的值,利用公式f n f n 1 f n 2 並不斷更新f n 1 與f n 2 的值...

劍指offer 9 斐波那契數列

現在要求輸入乙個整數n,輸出斐波那契數列的第n項。傳統遞迴實現,需要求多個重複子問題。使用動態規劃,memo記錄,但是,只是用了兩個。因此改進冬天規劃 普通的動態規劃 int fibonacci int n for int i 2 i n i return memo n 使用三個int不停的交換 i...