Middle
/* Կինոյում տեղերը դասավորված են մեկ շարքում: Նոր եկած դիտողը ընտրում է տեղ, որպեսզի նստի հնարավորինս հեռու մյուս դիտողներից շարքում: Արդյոք, տեղը, որտեղ նա նստելու է, մինչև ամենամոտը, Հավաստագրված է, որ շարքում միշտ ազատ տեղեր կան և արդեն նստած է առնվազն Գրեք ֆունկցիա, որը, հիմնվելով տրված տեղերի շարքի վրա (զրոներ և միավորներ) Օրինակ: Մուտք: [1, 0, 0, 0, 1] Ելք: 2 Մուտք: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Ելք: 2 Մուտք: [1, 0, 1, 0] Ելք: 1 */
sobes.tech AI
Պատասխան 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
Таким образом, функция возвращает индекс места, где зритель будет сидеть максимально далеко от других.