题目描述:
在一个狭小的路口,每秒只能通过一辆车,假如车辆的颜色只有3种,找出N秒内经过的最多颜色的车辆数量
三种颜色编号为0,1,2
输入描述:
第一行输入的是通过的车辆颜色信息
[0,1,1,2] 代表4秒钟通过的车辆颜色分别是0,1,1,2
第二行输入的是统计时间窗,整型,单位为秒
输出描述:
输出指定时间窗内经过的最多颜色的车辆数量
示例1
输入:
0 1 2 1
3
输出:
2
说明:
在[1,2,1]这个3秒时间窗内,1这个颜色出现2次,数量最多
示例2
输入:
0 1 2 1
2
输出:
1
说明:
在2秒时间窗内,每个颜色最多出现1次
解题思路:
滑动窗口,先统计从0开始的长度为time的时间内,每个颜色的车出现的次数是多少,存储在列表中,分别是store[0],store[1],store[2]
然后开始移动窗口,被移出窗口的左边tou位置处的颜色的次数减一,被添加进窗口的右边wei位置处的颜色次数加一,不断重复直至窗口滑动到时间最后。
#华为机试,emo了#
lst=list(map(int,input().split()))
time=int(input())
store=[0,0,0]
max_count=0
for i in range(3):
store[i]=lst[0:time].count(i)
max_count=max(max_count,store[i])
tou=0
wei=time
while wei<len(lst):
store[lst[wei]]+=1
store[lst[tou]]-=1
max_count = max(max_count,store[lst[wei]])
tou+=1
wei+=1
print(max_count)