1341B Nastya and Door

在这里插入图片描述
题目:给定含有n个元素的数组, 找出长度为 K 的含有山峰最多的子数组(山峰如果在边界则不被计算在内,山峰为比两边元素都大的元素)

思路:
因为 “山峰”位于边界不算入值内,所以提前一位遍历

t=int(input())
for i in range(t):
    n,k=map(int,input().split())
    a=list(map(int,input().split()))
    p=[0]*n
    ans, tmp, ind = 0,0,0
    for i in range(2,n):
        if a[i-2] < a[i-1] > a[i]:
            tmp += 1
            p[i-1] = 1
        if i >= k:
            tmp -= p[i - k + 1]
        if ans < tmp:
            ans = tmp
            ind = max(0, i - k + 1)
    print(ans + 1, ind + 1)
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页