Python程序:如何查找列表中算术序列的数量?


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

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

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

  • count := 0, ans := 0

  • for i in range 2 to size of nums, do

    • if nums[i] - nums[i - 1] 等于 nums[i - 1] - nums[i - 2],则

      • count := count + 1

    • 否则,

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

      • count := 0

  • if count 不为零,则

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

  • return 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

更新于: 2020年11月10日

2K+ 浏览量

开启你的 职业生涯

完成课程获得认证

开始学习
广告