最新华为OD机试
2025华为od 机试2025B卷-华为机考OD2025年B卷
题目描述
停车场有一横排车位,0代表没有停车,1代表有车。至少停了一辆车在车位上,也至少有一个空位没有停车。
为了防剐蹭,需为停车人找到一个车位,使得距停车人的车最近的车辆的距离是最大的,返回此时的最大距离。
输入描述
- 一个用半角逗号分割的停车标识字符串,停车标识为0或1,0为空位,1为已停车。
- 停车位最多100个。
输出描述
输出一个整数记录最大距离。
示例1
输入
1,0,0,0,0,1,0,0,1,0,1
输出
2
说明
当车停在第3个位置上时,离其最近的的车距离为2(1到3)。
当车停在第4个位置上时,离其最近的的车距离为2(4到6)。
其他位置距离为1。
因此最大距离为2
解题思路
-
计算距离:
- 为了确保车辆停放时与最近的车之间的距离最大,考虑以下几种情况:
- 如果空位段位于开头(在第一个’1’之前),那么最大距离就是空位段的长度。
- 如果空位段位于结尾(在最后一个’1’之后),同样,最大距离就是这个段的长度。
- 如果空位段位于中间(在两个’1’之间),最大的距离就等于这个段长度的一半(向下取整),因为车辆放置在中间时,可以与两侧的车辆保持最大距离。
- 为了确保车辆停放时与最近的车之间的距离最大,考虑以下几种情况:
-
获取最大距离:在计算所有独立空位段的最大距离后,返回这个最大值作为最终结果。
Java
import java.util.Scanner;
import