Sobes.tech
Back to questions
Middle
3

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})) }

Companies where asked
VKVK

Answer from AI

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, что соответствует позиции между двумя единицами.

Функция полезна, например, для задачи размещения элемента максимально далеко от других в бинарном массиве.