题目解析
本题应该只是逻辑分析题。
我的解题思路如下:
定义一个playing集合,用于记录正在玩摇摇车的小朋友。
定义一个waiting队列,用于记录正在排队的小朋友。
然后遍历小朋友编号列表,被遍历的小朋友设为kid
首先,需要判断 kid 的状态,kid可能是三种状态:
- 正在玩摇摇车(即在playing集合中)
- 正在排队(即在waiting集合中)
- 新加入的(即既不在playing中,也不在waitingzhong1)
针对不同状态的kid,我们应该做如下处理:
- 如果 kid 在 playing 中存在,则本次kid编号出现,代表kid玩好了,开心地离开了。
当playing集合中有kid开心地离开后,此时我们还应该检查waiting队列是否有小朋友排队,如果有,我们应该立即将队头的小朋友加入playing集合,即让排在队头的小朋友玩摇摇车。
- 如果 kid 在 waiting 中存在,则本次kid编号出现,代表kid没有玩上,不开心地离开了。
- 如果 kid 既不在playing,也不在waiting,则说明kid是新加入的,此时我们需要检查摇摇车是否还有剩余
- 如果palying.size < n,则代表摇摇车还有剩余,则此时kid可以直接去玩,即加入playing集合