假设我们有一个称为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