Middle
/* Kino vietos yra išdėstytos vienoje eilėje. Naujas žiūrovas pasirenka vietą, kad sėdėtų kuo toliau nuo kitų žiūrovų eilėje. Tai reiškia, atstumas nuo vietos, kur jis sės, iki artimiausios Yra garantuojama, kad visada yra laisvų vietų eilėje ir jau sėdi bent Parašykite funkciją, kuri pagal duotą vietų eilę (masyvą iš nulinių ir vienetinių reikšmių) Pavyzdys: Įvestis: [1, 0, 0, 0, 1] Išeitis: 2 Įvestis: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Išeitis: 2 Įvestis: [1, 0, 1, 0] Išeitis: 1 */
sobes.tech AI
Atsakymas iš 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
Таким образом, функция возвращает индекс места, где зритель будет сидеть максимально далеко от других.