编辑-输出的冒号前没有空格。但是,在更改了该错误之后,它表示运行时错误,而不是错误的答案。甚至样本输入测试也成功运行。可能有什么问题吗?
问题 Avery具有N个正整数的数组。数组的第i个整数是Ai。
如果连续子数组的长度为m,并且按该顺序包含整数m,m-1,m-2,...,2、1,则该数组为m-countdown。例如,[3,2,1]是3倒数。
您能帮助Avery计算她数组中K倒数的次数吗?
输入 输入的第一行给出测试用例的数量,T。每个测试用例均以包含整数N和K的行开头。第二行包含N个整数。第i个整数是Ai。
输出 对于每个测试用例,输出一行包含Case #x:y的行,其中x是测试用例编号(从1开始),y是她数组中K倒数的数量。
限制 时间限制:每个测试集20秒。 内存限制:1GB。 1≤T≤100。 2≤K≤N。 对于所有i,1≤Ai≤2×105。
测试集1 2≤N≤1000。
测试集2
最多10个测试用例为2≤N≤2×105。
对于其余情况,2≤N≤1000。
样品
输入
3
12 3
1 2 3 7 9 3 2 1 8 3 2 1
4 2
101 100 99 98
9 6
100 7 6 5 4 3 2 1 100
输出
案例1:2
情况2:0
情况3:1
T = int(input())
res = []
for i in range(T):
N, K = map(int, input().split(' '))
ai = list(map(int, input().split(' ')))
y=0
count=0
for m in range(len(ai)):
count=0
if(ai[m]==K):
if(len(ai)>=m+K-1):
for j in reversed(range(1, K)):
if(ai[m+K-j]==j):
count=count+1
if(count==K-1):
y=y+1
else:
break
else:
continue
res.append("Case #"+str(i+1)+" : "+str(y))
for g in range(len(res)):
print(res[g])
答案 0 :(得分:0)
您可以使用两指针方法,例如采用两个变量i
和j
并都用0初始化
如果满足要求的条件,即保持i
固定增量j
。
while(a[k+1]-a[k]==1):
j++
k++
只要条件失败,请计算j-i
。如果完全j-i==m
,则增加您的计数器,说cnt
,然后放入i=j
,重复直到数组结尾