一、题目描述
疫情期间需要大家保证一定的社交距离,公司组织开交流会议。
座位一排共 N 个座位,编号分别为 [0, N - 1] , 要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。
满足:
- 每当一个员工进入时,需要坐到最大社交距离(最大化自己和其他人的距离的座位);
- 如果有多个这样的座位,则坐到 索引最小 的那个座位。
二、输入描述
- 会议室座位总数 seatNum 。(1 <= seatNum <= 500)
- 员工的进出顺序 seatOrLeave 数组,元素值为 1,表示进场;元素值为负数,表示出场(特殊:位置 0 的员工不会离开)。
- 例如 - 4 表示坐在位置 4 的员工离开(保证有员工坐在该座位上)
三、输出描述
最后进来员工,他会坐在第几个位置,如果位置已满,则输出 - 1 。
1、输入
10
[1,1,1,1,-4,1]
2、输出
5
3、说明
核心思想:每当一个员工进入时,需要坐到最大社交距离。
0 0 0 0 0 0 0 0 0 0
- 第一次坐在了0的位置;1 0 0 0 0 0 0 0 0 0
- 第二次坐在
华为OD机试:最大社交距离问题解析
本文详细解析了华为OD机试中的一道题目——最大社交距离。员工进入会议室时需保持最大社交距离,每次入场选择索引最小的最大距离座位。文章介绍了输入输出描述、解题思路及Java实现代码,还提供了效果展示和样例测试。
订阅专栏 解锁全文
4万+





