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
广告