Sobes.tech
Intern

""" Sinema koltukları tek bir sırada dizilmiştir. Yeni gelen izleyici, sıradaki diğer izleyicilerden mümkün olan en uzak mesafeye oturmak için bir koltuk seçer. Yani, izleyicinin oturacağı koltuk ile en yakın izleyici arasındaki mesafe maksimum olmalıdır. Her zaman boş koltuklar olduğunu ve en az bir izleyicinin oturduğunu garanti eder. Verilen bir koltuk sırası (sıfırlar ve birler dizisi) için, seçilen koltuk ile en yakın izleyici arasındaki mesafeyi (araları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] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }

sobes.tech yapay zeka

AI'dan gelen yanıt

Нужно найти место (индекс) с максимальным минимальным расстоянием до ближайшего занятого места (1). Для этого пройдём по массиву, найдя промежутки между занятыми местами, и вычислим максимальное расстояние.

Алгоритм:

  • Пройти по ряду, запоминая индексы занятых мест.
  • Рассмотреть три случая:
    1. Свободные места в начале ряда до первого занятого.
    2. Свободные места между двумя занятыми.
    3. Свободные места в конце ряда после последнего занятого.
  • Для промежутков между занятыми местами расстояние будет половиной длины промежутка (округлённой вниз).
  • Для концов — расстояние равно длине свободного участка.
  • Вернуть максимальное найденное расстояние.

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

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

    for i := 0; i < n; i++ {
        if arr[i] == 1 {
            if prev == -1 {
                // Свободные места в начале
                maxDist = i
            } else {
                // Свободные места между prev и i
                dist := (i - prev) / 2
                if dist > maxDist {
                    maxDist = dist
                }
            }
            prev = i
        }
    }

    // Свободные места в конце
    if n-1-prev > maxDist {
        maxDist = n - 1 - prev
    }

    return maxDist
}

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