Middle
/* Kino yerləri bir sırada yerləşir. Yeni gələn tamaşaçı yer seçir, ki, sıradakı digər tamaşaçılardan ən uzaq məsafədə otursun. Yəni, oturacağı yer ilə ən yaxın yer arasındakı məsafə, Hər zaman boş yerlər olduğunu və ən azı Verilən yerlər sırası (sıfır və birlərdən ibarət) üçün funksiyanı yazın. Nümunə: Giriş: [1, 0, 0, 0, 1] Çıxış: 2 Giriş: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Çıxış: 2 Giriş: [1, 0, 1, 0] Çıxış: 1 */
sobes.tech Süni İntellekt
AI-dan cavab
Задача — найти место (индекс) в ряду, где новый зритель сядет максимально далеко от уже занятых мест.
Идея решения:
- Пройти по ряду, найти все свободные места (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
Таким образом, функция возвращает индекс места, где зритель будет сидеть максимально далеко от других.