LeetCode 509 斐波那契數

2021-10-01 18:54:23 字數 1121 閱讀 3292

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

時間複雜度:o(2 n) —2 的n 次冪。這是計算斐波那契數最慢的方法。因為它需要指數的時間。

空間複雜度:o(n),在堆疊中我們需要與 n 成正比的空間大小。該堆疊跟蹤 fib(n) 的函式呼叫,隨著堆疊的不斷增長如果沒有足夠的記憶體則會導致 stackoverflowerror。

自底向上通過迭代計算斐波那契數的子問題並儲存已計算的值,通過已計算的值進行計算。減少遞迴帶來的重複計算。

如果 n 小於等於 1,則返回 n。

迭代 n,將計算出的答案儲存在陣列中。

使用陣列前面的兩個斐波那契數計算當前的斐波那契數。

知道我們計算到 n,則返回它的斐波那契數。

public

class

solution

return

fib(n-1)

+fib

(n-2);

}}

class

solution

int[

] arr =

newint

[n +1]

; arr[0]

=0; arr[1]

=1;for

(int i =

2; i <= n; i++

)return arr[n];}

}

LeetCode509 斐波那契數

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

leetcode 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...

leetcode 509斐波那契數列

遞迴方法 時間o 2 n 空間o logn class solution 遞迴 記憶化搜尋 時間o n 空間o logn class solution int fib int n return dp n 動態規劃 時間o n 空間o n class solution int fib int n re...