题目描述:
游乐场里增加了一批摇摇车,非常受小朋友欢迎,但是每辆摇摇车同时只能有一个小朋友使用,如果没有空余的摇摇车需要排队等候,或者直接离开,最后没有玩上的小朋友会非常不开心。 请根据今天小朋友的来去情况,统计不开心的小朋友数量?
1.摇摇车数量为N,范围是: 1 <= N < 10;2.每个小朋友都对应一个编码,编码是不重复的数字,今天小朋友的来去情况,可以使用编码表示为:1 1 2 3 2 3。(若小朋友离去之前有空闲的摇摇车,则代表玩耍后离开;不考虑小朋友多次玩的情况)。小朋友数量≤ 100
3.题目保证所有输入数据无异常且范围满足上述说明
输入描述
第一行: 摇摇车数量
第二行: 小朋友来去情况
输出描述?
返回不开心的小朋友数量
示例1:
输入
1?
1 2 1 2
输出
0说明:第一行,1个摇摇车第二行,1号来 2号来(排队) 1号走 2号走(1号走后摇摇车已有空闲,所以玩后离开)
示例2:
输入
1
1 2 2 3 1 3输出
1
说明:第一行,1个摇摇车第二行,1号来 2号来(排队) 2号走(不开心离开) 3号来(排队)1号走 3号走(1号走后摇摇车已有空闲,所以玩后离)
# -*- coding: utf-8 -*-
'''
#coding: utf-8
Author: mgc
Date: 2023-12-17 12:44:53
LastEditors: Do not edit
LastEditTime: 2023-12-19 15:47:03
'''
# import os
# import sys
# import math
# import functools
from collections import deque
# 读取用户输入的整数n
n = int(input())
# 读取用户输入的由空格分隔的整数列表,并转换为整数列表
nums = [int(x) for x in input().split(" ")]
# 初始化计数器为0
count = 0
# 初始化一个空集合,用于存储当前的数字
now = set([])
# 初始化一个队列,用于存储待处理的数字
lines = queue.Queue() # 注意:Python的标准库中没有queue.Queue,你可能需要使用deque或者使用标准库中的queue模块
# 遍历输入的每个数字
for i in range(len(nums)):
# 如果当前数字在集合中
if (nums[i] in now):
# 从集合中移除该数字
now.remove(nums[i])
# 如果队列不为空
if (not lines.empty()):
# 从队列中取出一个数字并添加到集合中
now.add(lines.get())
# 增加计数器,但随后减少1(这可能是个错误,因为这样计数器的值不会增加)
else:
count += 1
count -= 1
# 如果集合中的元素数量小于n
elif (len(now) < n):
# 将当前数字添加到集合中
now.add(nums[i])
# 如果队列不为空且队列首部的数字与当前数字相同
elif (not lines.empty()):
if (nums[i] == lines.queue[0]):
# 从队列中移除该数字并增加计数器
lines.get()
count += 1
# 如果队列为空
elif (lines.empty()):
# 将当前数字添加到队列中
lines.put(nums[i])
else: # 其他情况,直接将当前数字添加到队列中
lines.put(nums[i])
# 输出计数器的值
print(count)