Sobes.tech
Intern

""" Sinema koltukları tek bir sırada dizilmiştir. Yeni gelen bir izleyici, sıradaki diğer izleyicilerden mümkün olan en uzak mesafeye bir koltuk seçer. Yani, seçtiği koltuktan en yakın izleyiciye olan mesafe maksimum olmalıdır. Sırada her zaman boş koltuklar olduğu ve en az bir izleyicinin oturduğu garanti edilir. Verilen bir koltuk sırası (sıfır ve birlerden oluşan bir dizi) için, seçilen koltuk ile en yakın izleyici arasındaki mesafeyi (koltuklar arasındaki boşluk sayısı) döndüren bir fonksiyon 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 yapay zeka

AI'dan gelen yanıt

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

  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
}

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