Назад к вопросам
Intern
5
func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }
Компании, где спрашивали
Яндекс
Ответ от нейросети
sobes.tech AI
Функция maxPlaces на Go вычисляет максимальное расстояние до ближайшего элемента со значением 1 в массиве из 0 и 1.
Идея алгоритма:
- Перебираем массив, запоминая индексы элементов со значением 1.
- Для первого найденного 1 считаем расстояние от начала массива до неё.
- Для последующих 1 считаем половину расстояния между текущим и предыдущим индексов 1 (т.к. оптимальное место для посадки будет посередине).
- В конце учитываем расстояние от последнего 1 до конца массива.
Пример:
type intSlice []int
func max(a, b int) int {
if a > b {
return a
}
return b
}
func maxPlaces(arr []int) int {
maxDistance := 0
prev, first := -1, -1
for i := 0; i < len(arr); i++ {
if arr[i] == 1 {
if first == -1 {
first = i
maxDistance = max(maxDistance, i) // расстояние от начала
} else {
maxDistance = max(maxDistance, (i - prev) / 2) // половина расстояния между 1
}
prev = i
}
}
maxDistance = max(maxDistance, len(arr) - 1 - prev) // расстояние до конца
return maxDistance
}
Таким образом, функция находит максимально возможное расстояние до ближайшего занятого места (1) для посадки.