从Python中的数字列表中查找算术序列数的程序?

假设我们有一个称为nums的数字列表,我们必须找到长度≥3的连续算术序列的数量。众所周知,算术序列是一个数字列表,其中一个数字与下一个数字之间的差是相同的。

因此,如果输入类似于nums = [6、8、10、12、13、14],则输出将为4,因为我们具有以下算术序列:[6、8、10] [8、10, 12] [6、8、10、12] [12、13、14]

为了解决这个问题,我们将遵循以下步骤-

  • 计数:= 0,ANS:= 0

  • 对于范围在2到nums的i

    • ans:= ans +(count *(count + 1))/ 2的商

    • 计数:= 0

    • 数:=数+ 1

    • 如果nums [i]-nums [i-1]与nums [i-1]-nums [i-2]相同,则

    • 除此以外,

    • 如果计数不为零,则

      • ans:= ans +(count *(count + 1))/ 2的商

    • 返回ans

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

    示例

    class Solution:
       def solve(self, nums):
          count = 0
          ans = 0
          for i in range(2, len(nums)):
             if nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]:
                count += 1
             else:
                ans += (count * (count + 1)) // 2
                count = 0
          if count:
             ans += (count * (count + 1)) // 2
          return ans
    
    ob = Solution()nums = [6, 8, 10, 12, 13, 14]
    print(ob.solve(nums))

    输入值

    [6, 8, 10, 12, 13, 14]

    输出结果

    4
    猜你喜欢