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+ 瀏覽量

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告

© . All rights reserved.