从Python中的给定列表中查找最长斐波那契子序列长度的程序
假设我们有一个严格增加的正数列表,称为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:=数字
n:= A的大小
maxLen:= 0
S:=来自A的新集合
对于0到n范围内的i,执行
x:= A [j]
y:= A [i] + A [j]
长度:= 2
当y存在于S中时,
z:= x + y
x:= y
y:= z
长度:=长度+ 1
maxLen:= maxLen的最大值,长度
对于范围i +1至n的j,执行
如果maxLen> 2,则
返回maxLen
除此以外,
返回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
以上是 从Python中的给定列表中查找最长斐波那契子序列长度的程序 的全部内容, 来源链接: utcz.com/z/356270.html