Middle
/* Los asientos en el cine están en una fila. El espectador que acaba de llegar elige un asiento, para sentarse lo más lejos posible de los demás espectadores en la fila. Es decir, la distancia desde el asiento donde se sentará hasta el más cercano a él Se garantiza que siempre hay asientos libres en la fila y ya hay al menos Escribe una función que, dada una fila de asientos (un array de ceros y unos) Ejemplo: Entrada: [1, 0, 0, 0, 1] Salida: 2 Entrada: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Salida: 2 Entrada: [1, 0, 1, 0] Salida: 1 */
sobes.tech AI
Respuesta de la IA
Задача — найти место (индекс) в ряду, где новый зритель сядет максимально далеко от уже занятых мест.
Идея решения:
- Пройти по ряду, найти все свободные места (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
Таким образом, функция возвращает индекс места, где зритель будет сидеть максимально далеко от других.