Skip to content
On this page

849. Maximize Distance to Closest Person

https://leetcode.com/problems/maximize-distance-to-closest-person/

js
/**
 * @param {number[]} seats
 * @return {number}
 */
var maxDistToClosest = function(seats) {
  const n = seats.length
  let l = 0
  let r = n - 1

  while (seats[l] == 0) {
    l++
  }
  while (seats[r] == 0) {
    r--
  }

  let count = 0
  let maxlen = 0

  for (let i of seats.slice(l, r)) {
    if (i == 1) {
      count = 0
    } else {
      count++
      maxlen = Math.max(count, maxlen)
    }
  }

  return Math.max((maxlen + 1) / 2 >> 0, l, n - r - 1)
}
py
class Solution:

    def maxDistToClosest(self, seats):
        """
        :type seats: List[int]
        :rtype: int
        """
        n = len(seats)
        l = 0
        r = n - 1

        while seats[l] == 0:
            l += 1
        while seats[r] == 0:
            r -= 1

        count = 0
        maxlen = 0

        for i in seats[l:r]:
            if i == 1:
                count = 0
            else:
                count += 1
                maxlen = max(count, maxlen)

        return max((maxlen + 1) // 2, l, n - r - 1)