查找Python中给定列表的最长算术子序列长度的程序

假设我们有一个称为nums的数字列表,我们必须找到最长算术子序列的长度。众所周知,序列S [i]是算术序列,当S [i + 1]-S [i]对于范围内的每个i都具有相同的值时(0≤i <S-1的大小)。

因此,如果输入类似于nums = [1、4、7、10、13、20、16],那么输出将为6,子序列[1、4、7、10、13、16]是一种算术运算因为每个连续元素之间的差是3。

范例(Python)

让我们看下面的实现以更好地理解-

from collections import defaultdict

class Solution:

   def solve(self, arr):

      n = len(arr)

      if n <= 1:

         return n

      res = 0

      dp = defaultdict(lambda: 1)

      for i in range(1, n):

         for j in range(i):

            diff = arr[i] - arr[j]

            dp[i, diff] = dp[j, diff] + 1

            res = max(res, dp[i, diff])

      return res

ob = Solution()

nums = [1, 4, 7, 10, 13, 20, 16]

print(ob.solve(nums))

输入值

[1, 4, 7, 10, 13, 20, 16]
输出结果
6

以上是 查找Python中给定列表的最长算术子序列长度的程序 的全部内容, 来源链接: utcz.com/z/348740.html

回到顶部