【华为机试】2023年真题B卷(python)-不开心的小朋友

一、题目

题目描述:

游乐场里增加了一批摇摇车,非常受小朋友欢迎,但是每辆摇摇车同时只能有一个小朋友使用,如果没有空余的摇摇车需要排队等候,或者直接离开,最后没有玩上的小朋友会非常不开心。 请根据今天小朋友的来去情况,统计不开心的小朋友数量 
1.摇摇车数量为N,范围是: 1 <= N < 10;

2.每个小朋友都对应一个编码,编码是不重复的数字,今天小朋友的来去情况,可以使用编码表示为:1 1 2 3 2 3。(若小朋友离去之前有空闲的摇摇车,则代表玩耍后离开;不考虑小朋友多次玩的情况)。小朋友数量≤ 100
3.题目保证所有输入数据无异常且范围满足上述说明

二、输入输出

输入描述
第一行: 摇摇车数量
第二行: 小朋友来去情况
输出描述 
返回不开心的小朋友数量

三、示例

示例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)

你可能感兴趣的:(华为机试,华为,python,算法,华为机试,不开心的小朋友)