Middle
/* Locurile din cinematograf sunt aranjate într-un rând. Spectatorul care tocmai a venit alege un loc, pentru a sta cât mai departe de ceilalți spectatori din rând. Adică, distanța de la locul unde va sta până la cel mai apropiat Se garantează că întotdeauna există locuri libere în rând și deja stau cel puțin Scrie o funcție care, pe baza unui rând de locuri (un array de zerouri și unu) Exemplu: Intrare: [1, 0, 0, 0, 1] Ieșire: 2 Intrare: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Ieșire: 2 Intrare: [1, 0, 1, 0] Ieșire: 1 */
sobes.tech AI
Răspuns de la AI
Задача — найти место (индекс) в ряду, где новый зритель сядет максимально далеко от уже занятых мест.
Идея решения:
- Пройти по ряду, найти все свободные места (0).
- Для каждого свободного места вычислить расстояние до ближайшего занятого места (1).
- Выбрать место с максимальным таким расстоянием.
Пример реализации на Go:
func maxDistanceSeat(row []int) int {
n := len(row)
maxDist := -1
seatIndex := -1
for i := 0; i < n; i++ {
if row[i] == 0 {
// Найдем расстояние до ближайшего занятого места
dist := n
for j := 0; j < n; j++ {
if row[j] == 1 {
d := abs(i - j)
if d < dist {
dist = d
}
}
}
if dist > maxDist {
maxDist = dist
seatIndex = i
}
}
}
return seatIndex
}
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
Пример использования:
row := []int{1, 0, 0, 0, 1}
seat := maxDistanceSeat(row) // seat == 2
Таким образом, функция возвращает индекс места, где зритель будет сидеть максимально далеко от других.