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