劍指offer 面試題10 I 斐波那契數列

2021-10-04 12:12:17 字數 729 閱讀 3357

/*

*動態規劃解析:

狀態定義: 設 dpdp 為一維陣列,其中 dp[i]dp[i] 的值代表 斐波那契數列第 ii 個數字 。

轉移方程: dp[i + 1] = dp[i] + dp[i - 1]dp[i+1]=dp[i]+dp[i−1] ,即對應數列定義 f(n + 1) = f(n) + f(n - 1)f(n+1)=f(n)+f(n−1) ;

初始狀態: dp[0] = 0dp[0]=0, dp[1] = 1dp[1]=1 ,即初始化前兩個數字;

返回值: dp[n]dp[n] ,即斐波那契數列的第 nn 個數字。

空間複雜度優化:

若新建長度為 nn 的 dpdp 列表,則空間複雜度為 o(n)o(n) 。

由於 dpdp 列表第 ii 項只與第 i-1i−1 和第 i-2i−2 項有關,因此只需要初始化三個整形變數 sum, a, b ,利用輔助變數 sumsum 使 a, ba,b 兩數字交替前進即可 (具體實現見**) 。

節省了 dpdp 列表空間,因此空間複雜度降至 o(1)o(1) 。

* * */

#include

class

solution

intfib2

(int n)

return a;

}int

fib3

(int n)};

intmain()

劍指Offer 面試題10 I 斐波那契數列

寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 1000000007 如計算初...

面試題10 I 斐波那契數列

title 面試題10 i.斐波那契數列 introduce 寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而...

面試題10 I 斐波那契數列

寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 1000000007 如計算初...