从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

    回到顶部