在Python中从一组数字中查找算术序列的数量的程序?

在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,答案:= 0

  • 对于i在范围2到nums的大小中,执行以下操作 –

    • 如果nums[i] – nums[i-1]与nums[i-1] – nums[i-2]相同,则进行以下操作:
      • 计数:=计数+1
    • 否则,执行以下操作 –
      • 答案:= ans + (count * (count + 1))/2的商

      • 计数:= 0

  • 如果计数不为零,则执行以下操作 –

    • 答案:= ans + (count * (count + 1))/2的商
  • 返回答案

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

例子

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程