Sobes.tech
Intern

""" Kinozalardakı yerlər tək sətirdə yerləşir. Yeni gələn tamaşaçı yer seçir, qəzetdəki digər tamaşaçılardan mümkün qədər uzaqda oturmaq üçün. Yəni, oturacağı, ona yaxın olan tamaşaçıya olan məsafə maksimum olmalıdır. Həmişə sətirdə boş yerlər olduğunu və ən azı bir tamaşaçının oturduğunu təmin edir. Verilən yerlər sırasına (sıfır və birlərdən ibarət massiv) əsasən, seçilmiş yer ilə ən yaxın tamaşaçı arasındakı məsafəni (oturacaqlar arasındakı boşluqların sayı) qaytaran funksiya yazın. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] -> 3 [1, 0, 0, 0] -> 3 place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }

sobes.tech Süni İntellekt

AI-dan cavab

Чтобы найти максимальное расстояние до ближайшего зрителя, нужно рассмотреть три ситуации:

  1. Свободные места в начале ряда до первого занятого места.
  2. Свободные места в конце ряда после последнего занятого места.
  3. Свободные места между двумя занятыми местами — в этом случае выбираем середину промежутка.

Алгоритм:

  • Пройти по ряду, найти индексы занятых мест.
  • Рассчитать расстояния в начале и в конце ряда.
  • Для каждого промежутка между занятыми местами вычислить половину длины промежутка (округляя вниз).
  • Максимальное из этих значений и будет ответом.

Пример реализации на Go:

func maxPlaces(arr []int) int {
    n := len(arr)
    left := -1
    maxDist := 0

    // Найдем первое занятое место
    for i, seat := range arr {
        if seat == 1 {
            left = i
            maxDist = left // расстояние от начала ряда
            break
        }
    }

    // Пройдем по ряду, чтобы найти максимальное расстояние между занятыми местами
    for i := left + 1; i < n; i++ {
        if arr[i] == 1 {
            dist := (i - left) / 2
            if dist > maxDist {
                maxDist = dist
            }
            left = i
        }
    }

    // Проверим расстояние от последнего занятого места до конца ряда
    if n-1-left > maxDist {
        maxDist = n - 1 - left
    }

    return maxDist
}

Этот код возвращает максимальное расстояние до ближайшего зрителя, куда сядет новый зритель.