目录
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Python算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
一、题目描述
在一个狭小的路口,每秒只能通过一辆车,假如车辆的颜色只有3种,找出n秒内经过的最多颜色的车辆数量。
三种颜色编号为0、1、2。
二、输入描述
第一行输入的是通过的车辆颜色信息 [0 1 1 2] 代表4秒钟通过的车辆颜色分别是0 1 1 2;
第二行输入的是统计时间窗,整型,单位为秒。
三、输出描述
输出指定时间窗内经过的最多颜色的车辆数量。
四、解题思路
- 输入车辆颜色集合;
- 输入统计时间窗;
- 定义一个map,存储不同颜色的车的个数;
- 先初始化窗口,i相当于右指针;
- 如果已经存在此颜色,则再次+1;
- 如果首次出现,则为1;
- 当超出统计时间窗,取出脱离窗口的车型颜色;
- 如果map中已经存在,则-1;
- 算下时间窗内,相同车型出现的最大个数;
五、Python算法源码
while True:
try:
aa = input().split(" ")
n = int(input())
num = [0] * len(aa)
if n == 0:
print(n)
else:
if len(aa) < n:
count = len(aa)
else:
count = len(aa)-n+1
for i in range(count):
bb = [0]*3
# print(aa[i:i+n])
for a in aa[i:i+n]:
bb[int(a)] = bb[int(a)]+1
# print(bb)
num[i] = max(bb[0],bb[1],bb[2])
print(max(num))
except:
break
六、效果展示
1、输入
0 1 2 0 2 2 1
4
2、输出
3
3、说明
一共7台车,肉眼可见,4秒内通过最多的车是2,一共3台,故输出3。
🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路
🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,发现新题目,随时更新,全天CSDN在线答疑。