- n比較小的時候,可以直接使用遞歸法來求解,不做任何記憶化操作,時間複雜度是O(2^n),存在很多冗餘計算;
- 一般情況下,可以使用“記憶化搜索”(即動態規劃)或者迭代的方法,實現這個轉移方程,時間複雜度和空間複雜度都可以做到O(n);
- 爲了優化空間複雜度,可以不保存f(x-2)之前的項,我們只用兩個變量來維護f(x-1)和f(x-2),這樣就可以把時間複雜度優化到O(1);
- 隨着n的不斷增大,O(n)可能已經不能滿足我們的需要了,我們可以用“矩陣快速冪”的方法把算法加速到O(logn);
- 也可以利用斐波那契數列的通項公式,直接把n代入通項公式中計算;
斐波那契數列問題總結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
LeetCode_圓圈中最後剩下的數字_Math_E
面試題62. 圓圈中最後剩下的數字 class Solution { public int lastRemaining(int n, int m) { // 模擬法 List<Integer> l
放羊的大飞
2020-07-08 10:58:59
LeetCode_單詞的壓縮編碼_Array_M
放羊的大飞
2020-07-08 10:58:58
LeetCode_地圖分析_BFS_M
放羊的大飞
2020-07-08 10:58:58
LeetCode_卡牌分組_Array_E
放羊的大飞
2020-07-08 10:58:58
LeetCode_兩數之和_Array_E
1. 兩數之和 暴力: class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2];
放羊的大飞
2020-07-08 10:58:58
LeetCode_字符串轉換整數 (atoi)_String_M
放羊的大飞
2020-07-08 10:58:58
LeetCode_旋轉矩陣_Array_M
01.07. 旋轉矩陣 簡單粗暴: class Solution { public void rotate(int[][] matrix) { int size = matrix.length;
放羊的大飞
2020-07-08 10:58:58
LeetCode_盛最多水的容器_Array_M
11. 盛最多水的容器 暴力... class Solution { public int maxArea(int[] height) { int max = 0; for (int i
放羊的大飞
2020-07-08 10:58:58
LeetCode_除自身以外數組的乘積_Array_M
放羊的大飞
2020-07-08 10:58:58
LeetCode_整數反轉_Math_E
7. 整數反轉 class Solution { public int reverse(int x) { long result = 0; while (x != 0) { // 如果是-1
放羊的大飞
2020-07-08 10:58:58
LeetCode_有效的括號_Stack_E
放羊的大飞
2020-07-08 10:58:58
LeetCode_實現 Trie (前綴樹)_Trie_M
208. 實現 Trie (前綴樹) class Trie { //定義節點 class TrieNode { boolean isEnd; TrieNode[] next = new
放羊的大飞
2020-07-08 10:58:58
LeetCode_排序數組_Array_M
912. 排序數組 class Solution { public int[] sortArray(int[] nums) { quickSort(nums, 0, nums.length - 1);
放羊的大飞
2020-07-08 10:58:58