解题思路:
(1)求出位置对应元素为0的前导1和后导1的位置
(2)对所有的元素为0的位置求最近距离
typedef pair<int,int> pii;
class Solution {
public:
int maxDistToClosest(vector<int>& seats) {
int len=seats.size();
int start=-30000,end=30000,max=1;
vector<pii> v(len,pii(start,end));
for(int i=0;i<len;i++) { // 当前位置前导1的位置
if(seats[i]==0) v[i].first=start;
else start=i;
if(seats[len-1-i]==0) v[len-1-i].second=end;
else end=len-1-i;
}
for(int i=0;i<len;i++) {
if(seats[i]==0) {
max = min(v[i].second-i,i-v[i].first)>max?min(v[i].second-i,i-v[i].first):max;
}
}
return max;
}
};