停车场有一横排车位,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