在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
- 如果nums[i] – nums[i-1]与nums[i-1] – nums[i-2]相同,则进行以下操作:
-
如果计数不为零,则执行以下操作 –
- 答案:= 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