如果序列
x_1, x_2, ..., x_n
滿足下列條件,說它就英文的
斐波那契式
的:定給乙個
嚴格遞增
的正整數陣列形成序列,找到
a
中最長的那斐波契式的子串行的長度。如果乙個不存在,返回0。
(回想一下,子串行的英文從原序列
a
中派生出來的,它從
a
中刪掉任意數量的元素(也可以不刪),而不改變其餘元素的順序。例如,
[3, 5, 8]
的英文
[3, 4, 5, 6, 7, 8]
的乙個子串行)
示例1:
輸入: [1,2,3,4,5,6,7,8]
輸出: 5
解釋:最長的斐波那契式子串行為:[1,2,3,5,8] 。
示例2:
輸入: [1,3,7,11,12,14,18]
輸出: 3
解釋:最長的斐波那契式子序列有:
[1,11,12],[3,11,14] 以及 [7,11,18] 。
思路:如果直接使用遍歷演算法的話,時間複雜度大概是為o(n ^ 3)這個數量級,而題目要求中給出的陣列甲的最大長度為1000,如果使用為o(n ^ 3)的演算法,勢必會超時。
考慮如何簡化:斐波那契數列有乙個性質,即一但前兩個數字確定,整個數列即確定的故我們使用二維陣列來儲存這一資訊
,二維陣列地圖的兩個索引分別為該斐波那契數列前兩個數在甲中的索引
,其對應的值為由該數列在整個序列中的最大長度
。我們只要從後往前遍歷整個陣列,就能使用到地圖中所儲存的資訊。
**如下:
class solution
for(int j = a.length - 3; j >= 0; j--)else
}return -1;
}}
斐波那契序列
斐波那契 fibonacci1170 1250 義大利最傑出的數學家。其父為比薩的商人,他認為數學是有用的,因此送斐波那契向阿拉伯教師們學習數學,掌握了印度數碼之一新的記數體系,後來遊歷埃及 敘利亞 希臘 西西里 法國等地,掌握了不同國家和地區商業的算術體系,1200年回答比薩,潛心研究數學,120...
Fibonacci斐波那契數列序列
著名的斐波拉契數列 fibonacci 除第乙個和第二個數外,任意乙個數都可由前兩個數相加得到 1,1,2,3,5,8,13,21,34,def fibonacci n if n 1 res 1 if n 2 res 1 if n 2 res fibonacci n 1 fibonacci n 2 ...
無限序列 斐波那契數列
description 我們按以下方式產生序列 1 開始時序列是 1 2 每一次變化把序列中的 1 變成 10 0 變成 1 經過無限次變化,我們得到序列 1011010110110101101 總共有 q 個詢問,每次詢問為 在區間a和b之間有多少個1。任務 寫乙個程式回答q個詢問 input 第...