首先,我尝试使用蛮力检查来完成每个可能的con-sub数组。 但是,对于大型阵列,它会拖延很长时间
def ap(test,d):
l=len(test)
if l==1:
return True
elif l>1:
for i in range(l-1):
if test[i+1]-test[i]!=d:
return False
break
else:
return True
arr=list(map(int,input().split()))
d=int(input()) # common diff
length=0
for i in range(n):
for j in range(i+1,n+1):
if ap(arr[i:j],d):
lon=len(arr[i:j])
if lon>length:
length=lon
print(length)
答案 0 :(得分:1)
这个问题比“最长递增连续子序列”简单得多,一个原因是1)您有差异,2)您需要连续子数组
所以遍历数组一次就足够了,检查当前对邻居是否需要差值,并且在为真时增加增量长度
for i in range(1, len(A)):
if A[i]-A[i-1] == d:
curlen += 1
maxlen = max(maxlen, curlen)
else
curlen=1