题目描述:
辅导课堂在推进质量建设,需要分析每堂直播课的用户报障数量。
当连续多个课程的报障数量之和大于一个数s的时候,系统会发出报警。想知道最长连续的没有触发报警的课程数量。
输入描述:
第一行两个整数 n,s
第二行 n 个整数,每个整数表示一次课程报障数量ai
输出描述:
最长连续的没有触发报警的课程数量
用例输入 :
3 2
1 1 3
用例输出:
2
思路:
滑动窗口的思想吧,模拟个先进先出个队列,越值了,deque就popleft(),很简单,看代码
代码:
from collections import deque
n,s=map(int,input().split())
ai=list(map(int,input().split()))
ans=0
d=deque()
for i in ai:
if i>s:#新数字超限,直接全清空
d.clear()
continue
if i+sum(d)>s:#加入窗口后越值,将队首弹出,一直到可以#可以相等,不要忘了
while len(d)!=0:
d.popleft()
if i+sum(d)<s:
break
d.append(i)
if ans<len(d):
ans=len(d)
print(ans)