Maximize Distance to Closest Person
给一个数组, 找其中的0到两边1最短距离. 这个题N^2还是很好做的, 就是一个扫一边内嵌一个while双指针.
但是N的做法就需要点考虑, 我是用counting的方法, 遇到0就记录一下0的个数, 遇到1就知道前边0的个数, 这样除一下2就知道中间的位置.
class Solution {
public int maxDistToClosest(int[] seats) {
int res = 0;
int cur = 0;
for (int i=0;i<seats.length;i++){
if (seats[i]==0){
cur++; // count the number of 0
}
else {
if (i-cur>0){
cur=cur/2 + cur%2;
}
res = Math.max(res,cur);
cur=0;
}
}
res = Math.max(res,cur);
return res;
}
}