求帮忙,Java编程

停车场有一横排车位,0代表没有停车,1代表有车,至少停了一辆车在车位上,也至少有一个空位没有停车
为了防刮蹭,要为停车人找到一个车位,使得距停车人的车最近的车辆的距离是最大的,返回此时的最大距离。
输入描述:

1、一个用半角逗号分割的停车标识字符串,停车标识为0或1,0位空位,1为已停车;
2、停车位z最多100个。

输出描述:

输出一个整数记录最大距离。

定义一个整形数组,最大100个元素,把输入的字符串转换为数组保存

粗略来说,应该不难吧。遍历字符串,找到连续的0最多的部分,记为[i,j]。

(j-i+1)/2向上取整就是最大距离,也可以是(j-i)/2+1

class Solution {
	public int maxDistToClosest(int[] seats) {
		int max = 0;
		int count = 0;
		for (int i = 0; i < seats.length; i++) {
			if (seats[i] == 0) {
				count++;
				if (i == seats.length - 1) {
					if (count > max) {
						max = count;
						return max;
					}
				}
			} else {
				if (count > max) {
					max = count;
				}
				count = 0;
			}
		}
		int countleft = 0;
		for (int i = 0; i < seats.length; i++) {
			if (seats[i] == 0) {
				countleft++;
			} else {
				break;
			}
		}

		int countright = 0;
		for (int i = seats.length - 1; i > -1; i--) {
			if (seats[i] == 0) {
				countright++;
			} else {
				break;
			}
		}
		int maxedge = Math.max(countleft, countright);

		int maxmid = 0;
		if (max % 2 == 1) {
			maxmid = max / 2 + 1;
		} else {
			maxmid = max / 2;
		}
		return maxedge > maxmid ? maxedge : maxmid;
	}

}

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

String.split循环,用list记录下有车的索引值

定义max,循环list,记录下当前循环元素和下一个元素的差值

距离是max/2