Sobes.tech
Middle

/* Sinema koltukları bir sırada dizilidir. Yeni gelen izleyici, diğer izleyicilerden en uzak olacak şekilde koltuğunu seçer. Yani, oturacağı koltuk ile en yakındaki koltuk arasındaki mesafe, Her zaman boş koltuklar olduğunu ve en az bir tane olduğunu garanti eder. Verilen koltuk dizisi (sıfır ve birlerden oluşan bir dizi) için bir fonksiyon yazın. Örnek: Girdi: [1, 0, 0, 0, 1] Çıktı: 2 Girdi: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Çıktı: 2 Girdi: [1, 0, 1, 0] Çıktı: 1 */

sobes.tech yapay zeka

AI'dan gelen yanıt

Задача — найти место (индекс) в ряду, где новый зритель сядет максимально далеко от уже занятых мест.

Идея решения:

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

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

func maxDistanceSeat(row []int) int {
    n := len(row)
    maxDist := -1
    seatIndex := -1

    for i := 0; i < n; i++ {
        if row[i] == 0 {
            // Найдем расстояние до ближайшего занятого места
            dist := n
            for j := 0; j < n; j++ {
                if row[j] == 1 {
                    d := abs(i - j)
                    if d < dist {
                        dist = d
                    }
                }
            }
            if dist > maxDist {
                maxDist = dist
                seatIndex = i
            }
        }
    }
    return seatIndex
}

func abs(x int) int {
    if x < 0 {
        return -x
    }
    return x
}

Пример использования:

row := []int{1, 0, 0, 0, 1}
seat := maxDistanceSeat(row) // seat == 2

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