在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。
至少有一個(gè)空座位,且至少有一人坐在座位上。
亞歷克斯希望坐在一個(gè)能夠使他與離他最近的人之間的距離達(dá)到最大化的座位上。
返回他到離他最近的人的最大距離。
示例 1:
輸入:[1,0,0,0,1,0,1]
輸出:2
解釋:
如果亞歷克斯坐在第二個(gè)空位(seats[2])上,他到離他最近的人的距離為 2 。
如果亞歷克斯坐在其它任何一個(gè)空位上,他到離他最近的人的距離為 1 。
因此,他到離他最近的人的最大距離是 2 。
示例 2:
輸入:[1,0,0,0]
輸出:3
解釋:
如果亞歷克斯坐在最后一個(gè)座位上,他離最近的人有 3 個(gè)座位遠(yuǎn)。
這是可能的最大距離,所以答案是 3 。

/*
分析問題:
對于我們判斷有空位選擇 最大距離有是哪種類型
第一 第一個(gè)1的最左邊
第二 最后一個(gè)1的最右邊
第三 兩個(gè)1的中間 (選擇一個(gè)最大的)
*/
class Solution {
public static int maxDistToClosest(int[] seats) {
int frist1 = -1;
int distance = 0;
int j= 0 , k = 0 ;
for(int i = 0;i<seats.length;i++ ) {
if(seats[i] == 1) {
j = i;
if(distance < j-k) {
distance = j- k;
}
if(frist1 == -1) {
frist1 = i;
}
k = j;
}
}
int maxDistance = twoNumChooseMaxDistance(k,frist1,seats);
distance = distance/2;
if(distance > maxDistance)
return distance;
else
return maxDistance;
}
public static int twoNumChooseMaxDistance(int last1,int frist1,int[] s) {
if(frist1 > (s.length-last1-1))
return frist1;
else
return s.length-last1-1;
}
}