具体思想:
双指针遍历,右边逐个向右走,遇到1就停;
prev记录左边的1的位置;
注意一下边界条件;
具体代码:
双指针:
class Solution {
public:
int maxDistToClosest(vector<int>& seats) {
int l=0,r=0;
int prev=-1;
int len=0;
while(r<seats.size()){
if(seats[r]==0){
r++;
continue;
}
//如果到1;
if(prev==-1){
len=r;
}else{
int temp=r-prev-1;
if(temp%2==0){
len=max(len,temp/2);
}else{
len=max(len,temp/2+1);
}
}
prev=r;
r++;
}
if(prev!=r-1){
len=max(len,r-prev-1);
}
return len;
}
};