思路:就是寻找连续零的个数。这里需要分成连续零在开头或者结尾,连续零在中间两种情况来讨论。以下是Java的实现形式:
class Solution {
public int maxDistToClosest(int[] seats) {
int num=0;
int num_last=0;
int num_begin=0;
int re=0;
for(int i=seats.length-1;i>=0;i--){
if(seats[i]==0){
num_last++;
continue;
}
break;
}
for(int i=0;i<seats.length;i++){
if(seats[i]==0){
num_begin++;
continue;
}
break;
}
num_last=Math.max(num_last,num_begin);//查开头和结尾连续零个数的最大值
if(seats[0]==0) {
num=1;
re=1;
}
for(int i=1;i<seats.length;i++){
if(seats[i]==0&&seats[i-1]==0){
num++;
}else if(seats[i]==0&&seats[i-1]!=0){
num++;
}else if(seats[i]==1){
num=0;
}
re=Math.max(re,num);
}
re=Math.max(num_last,(re-1)/2+1);
return re;
}
}