0
点赞
收藏
分享

微信扫一扫

课程质量建设 算法题 滑动窗口 python 双队列deque

栖桐 2022-04-04 阅读 115
python算法

题目描述:

辅导课堂在推进质量建设,需要分析每堂直播课的用户报障数量。
当连续多个课程的报障数量之和大于一个数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)

总结:deque双队列,用处很多,得掌握,有什么可改正的地方,请指出

举报

相关推荐

0 条评论