Назад к вопросам
VK
Middle
4
import "fmt" func maxDistants(arr []int)int{ maxDist := 0 lastOne := -1 for i:= 0; i < len(arr); i++{ if arr[i] == 1 { if lastOne == -1 { maxDist = i } else { dist := (i - lastOne)/2 if dist > maxDist { maxDist = dist } } lastOne = i } } if arr[len(arr)-1] == 0 { dist := len(arr) - 1 - lastOne if dist > maxDist { maxDist = dist } } return maxDist } func main() { fmt.Println(maxDistants([]int{1, 0, 0, 0, 1})) }
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Данный код на Go реализует функцию maxDistants, которая находит максимальное расстояние до ближайшего элемента со значением 1 в массиве из 0 и 1.
Алгоритм работает так:
- Перебирает массив, запоминая индекс последнего найденного 1 (
lastOne). - Если текущий элемент 1 и это первый найденный, максимальное расстояние равно индексу этого элемента (расстояние от начала).
- Если это не первый 1, вычисляет половину расстояния между текущим и предыдущим 1, обновляя максимум.
- После прохода проверяет расстояние от последнего 1 до конца массива, если там идут нули.
Пример:
arr := []int{1, 0, 0, 0, 1}
fmt.Println(maxDistants(arr)) // Выведет 2
Здесь максимальное расстояние — 2, что соответствует позиции между двумя единицами.
Функция полезна, например, для задачи размещения элемента максимально далеко от других в бинарном массиве.