Open Tcdian opened 3 years ago
function maxDistToClosest(seats: number[]): number {
let firstPerson = -1;
let lastPerson = -1;
let maxDis = 0;
for (let i = 0; i < seats.length; i++) {
if (seats[i] === 1) {
firstPerson = i;
break;
}
}
for (let i = seats.length; i >= 0; i--) {
if (seats[i] === 1) {
lastPerson = i;
break;
}
}
if (firstPerson > maxDis) {
maxDis = firstPerson;
}
if (seats.length - lastPerson - 1 > maxDis) {
maxDis = seats.length - lastPerson - 1;
}
let prevPerson = firstPerson;
for (let i = firstPerson + 1; i <= lastPerson; i++) {
if (seats[i] === 1) {
if (maxDis * 2 < i - prevPerson) {
maxDis = Math.floor((i - prevPerson) / 2);
}
prevPerson = i;
}
}
return maxDis;
};
849. Maximize Distance to Closest Person
You are given an array representing a row of
seats
whereseats[i] = 1
represents a person sitting in the ith seat, andseats[i] = 0
represents that the ith seat is empty (0-indexed).There is at least one empty seat, and at least one person sitting.
Alex wants to sit in the seat such that the distance between him and the closest person to him is maximized.
Return that
maximum
distance to the closest person.Example 1
Example 2
Example 3
Constraints
seats[i] is 0 or 1
.