मान लीजिए कि हमारे पास संख्या नामक सकारात्मक संख्याओं की सख्ती से वृद्धि की एक सूची है। हमें सबसे लंबी अनुवर्ती ए (न्यूनतम लंबाई 3 की लंबाई) की लंबाई इस तरह से ढूंढनी है कि ए [i] =ए [i - 1] + ए [i - 2] सभी के लिए i> 1.
इसलिए, यदि इनपुट अंकों की तरह है =[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], तो आउटपुट 6 होगा, जैसा कि हम चुन सकते हैं [1, 2, 3, 5, 8, 13]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- ए:=अंक
- n :=A का आकार
- मैक्सलेन:=0
- S :=A से एक नया सेट
- मैं के लिए 0 से n की सीमा में, करते हैं
- i + 1 से n श्रेणी में j के लिए, करें
- x:=ए[जे]
- y :=A[i] + A[j]
- लंबाई:=2
- जबकि y S में मौजूद है, करें
- z :=x + y
- x :=y
- y :=z
- लंबाई:=लंबाई + 1
- अधिकतम लेन :=अधिकतम अधिकतम लेन, लंबाई
- i + 1 से n श्रेणी में j के लिए, करें
- अगर मैक्सलेन> 2, तो
- मैक्सलेन लौटाएं
- अन्यथा,
- वापसी 0
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, nums): A = nums n = len(A) maxLen = 0 S = set(A) for i in range(0, n): for j in range(i + 1, n): x = A[j] y = A[i] + A[j] length = 2 while y in S: z = x + y x = y y = z length += 1 maxLen = max(maxLen, length) if maxLen > 2: return maxLen else: return 0 ob = Solution() nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] print(ob.solve(nums))
इनपुट
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
आउटपुट
6