一. 题目
疫情期间需要大家保持一定的社交距离,公司组织开交流会议。
座位一排共 N NN 个座位,编号分别为[0 , N − 1 0,N-10,N−1]。
要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。
满足:
每当一个员工进入时,需要坐到最大社交距离(最大化自己和其他人的距离的座位);
如果有多个这样的座位,则坐到索引最小的那个座位。
输入描述
会议座位总数 s e a t N u m seatNumseatNum。1 ≤ s e a t N u m ≤ 500 1 \le seatNum \le 5001≤seatNum≤500.
员工的进出顺序 s e a t O r L e a v e seatOrLeaveseatOrLeave 数组 。
元素值为 1 11 ,表示进场
元素值为负数,表示出场(特殊:位置 0 00 的员工不会离开)
例如 − 4 -4−4 表示坐在位置 4 44 的员工离开(保证所有员工坐在该座位上)
输出描述
最后进来的员工,他会坐在第几个位置,如果位置已满,则输出 − 1 -1−1 .
二.解题思路
解题思路如下:
- 初始化一个长度为
seat_num
的数组,表示座位的状态,-1表示座位为空。 - 遍历员工的进出顺序数组,对于每个进入的员工,找到一个满足条件的座位:
- 寻找空座位中社交距离最大的座位。
- 如果有多个最大社交距离的座位,选择最小索引的座位。