在Python中找到具有恒定差异的最长算术子序列的长度的程序

假设我们有一个数字列表 nums 和另一个值 diff,我们必须找到最长算术子序列的长度,其中子序列中任何连续数字之间的差异与 diff 相同。

所以,如果输入像 nums = [-1, 1, 4, 7, 2, 10] diff = 3,那么输出将是 4,因为,我们可以选择像 [1, 4, 7, 10 这样的子序列]。

示例

让我们看看以下实现以获得更好的理解 -

from collections import defaultdict
def solve(nums, diff):
   seen = defaultdict(int)
   mx = 0
   for x in nums:
      if x - diff in seen:
         seen[x] = seen[x - diff] + 1
      else:
         seen[x] = 1
      mx = max(mx, seen[x])
   return mx

nums = [-1, 1, 4, 7, 2, 10]
diff = 3
print(solve(nums, diff))

输入

[-1, 1, 4, 7, 2, 10], 3
输出结果
4

猜你喜欢