forked from DengWangBao/Leetcode-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMaximizeDistanceToClosestPerson.java
46 lines (41 loc) · 1.28 KB
/
MaximizeDistanceToClosestPerson.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.Arrays;
public class MaximizeDistanceToClosestPerson {
/**
* 这题要注意两个边界的情况,因为如果是非边界的情况,要坐在中间的
*/
public int maxDistToClosest(int[] seats) {
int max = 0;
int[] zone = new int[2];
for (int index = 0; index < seats.length; ) {
Arrays.fill(zone, -1);
index = nextFree(seats, index, zone);
if (zone[0] == 0 || zone[1] == seats.length - 1) {
max = Math.max(max, zone[1] - zone[0] + 1);
} else {
max = Math.max(max, (zone[1] - zone[0] + 2) / 2);
}
}
return max;
}
/**
* 返回从start开始的连续的0区间
*/
private int nextFree(int[] seats, int start, int[] zone) {
boolean enter = false;
for (int i = start, j = 0; i <= seats.length; i++) {
if (i < seats.length && seats[i] == 0) {
if (!enter) {
enter = true;
j = i;
}
} else {
if (enter) {
zone[0] = j;
zone[1] = i - 1;
return i + 1;
}
}
}
return seats.length;
}
}