1. 程式人生 > 其它 >Leetcode題目總結 劍指 Offer 10- I. 斐波那契數列

Leetcode題目總結 劍指 Offer 10- I. 斐波那契數列

題目描述

寫一個函式,輸入 n ,求斐波那契(Fibonacci)數列的第 n 項(即 F(N))。斐波那契數列的定義如下:

F(0) = 0, F(1)= 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

示例 1:

輸入:n = 2
輸出:1
示例 2:

輸入:n = 5
輸出:5

提示:

0 <= n <= 100

做法

遞推法

注意答案需要取模

可以用滾動陣列的思想優化空間到O(1)

程式碼

 1 class
Solution { 2 public: 3 int fib(int n) { 4 int a[3]; 5 a[0] = 0; 6 a[1] = 1; 7 a[2] = 1; 8 if(n <= 2) return a[n]; 9 for(int i = 3; i <= n; i++) 10 { 11 a[0] = a[1]; 12 a[1] = a[2]; 13 a[2] = (a[0
] + a[1]) % (1000000007); 14 } 15 return a[2]; 16 } 17 };