फाइबोनैचि अनुक्रम:
अनुक्रम X_1, X_2, ..., X_n फाइबोनैचि है यदि:
-
n>=3
-
X_i + X_{i+1} =X_{i+2} सभी के लिए i + 2 <=n
समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो संख्याओं की एक सरणी लेता है, एआर, पहले और एकमात्र तर्क के रूप में। हमारे फ़ंक्शन को सरणी गिरफ्तारी में मौजूद सबसे लंबे फाइबोनैचि अनुक्रम की लंबाई को ढूंढना और वापस करना चाहिए।
शेष तत्वों के क्रम को बदले बिना, गिरफ्तारी से किसी भी संख्या में तत्वों (कोई नहीं सहित) को हटाकर किसी अन्य अनुक्रम गिरफ्तारी से एक अनुक्रम प्राप्त किया जाता है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है
इनपुट
const arr = [1, 3, 7, 11, 14, 25, 39];
आउटपुट
const output = 5;
आउटपुट स्पष्टीकरण
क्योंकि सबसे लंबा फाइबोनैचि अनुक्रम है [3, 11, 14, 25, 39]
निम्नलिखित कोड है:
उदाहरण
const arr = [1, 3, 7, 11, 14, 25, 39]; const longestFibonacci = (arr = []) => { const map = arr.reduce((acc, num, index) => { acc[num] = index return acc }, {}) const memo = arr.map(() => arr.map(() => 0)) let max = 0 for(let i = 0; i < arr.length; i++) { for(let j = i + 1; j < arr.length; j++) { const a = arr[i] const b = arr[j] const index = map[b - a] if(index < i) { memo[i][j] = memo[index][i] + 1 } max = Math.max(max, memo[i][j]) } } return max > 0 ? max + 2 : 0 }; console.log(longestFibonacci(arr));
आउटपुट
5