Места в кинотеатре стоят в один ряд. Ряд задан слайсом: 1 — место занято, 0 —
свободно. Новый зритель садится на свободное место так, чтобы расстояние до
ближайшего соседа было максимальным. Верните это расстояние.
Расстояние между местами i и j — |i - j|. Гарантируется, что в ряду есть хотя
бы одно свободное и хотя бы одно занятое место.
// MaxDistToClosest возвращает максимально возможное расстояние
// от свободного места до ближайшего занятого.
func MaxDistToClosest(seats []int) int
Примеры
MaxDistToClosest([]int{0, 0, 1, 0, 1, 0, 0}) // 2 — крайнее левое или крайнее правое место
MaxDistToClosest([]int{1, 0, 0, 0, 0, 1, 0, 0, 1}) // 2
MaxDistToClosest([]int{0, 1, 0, 1}) // 1
MaxDistToClosest([]int{0, 0, 0, 0, 0, 0, 0, 0, 0, 1}) // 9 — садимся с самого края
MaxDistToClosest([]int{1, 0, 0, 0, 0, 0, 0, 1, 0}) // 3
MaxDistToClosest([]int{1, 0, 0, 0, 0}) // 4
Ограничения: 2 <= len(seats) <= 10^6. Время O(n), дополнительная память O(1).
Устно: а если нужно вернуть не расстояние, а номер места (при равенстве — самое левое)?