Sobes.tech
Middle

/* Οι θέσεις στον κινηματογράφο είναι τοποθετημένες σε μια σειρά. Ο θεατής που μόλις ήρθε επιλέγει μια θέση, για να καθίσει όσο το δυνατόν πιο μακριά από τους άλλους θεατές στη σειρά. Δηλαδή, η απόσταση από τη θέση που θα καθίσει μέχρι τον πιο κοντινό Εγγυάται ότι πάντα υπάρχουν ελεύθερες θέσεις στη σειρά και ήδη κάθεται τουλάχιστον Γράψτε μια λειτουργία που, με βάση μια σειρά θέσεων (έναν πίνακα μηδέν και ένα) Παράδειγμα: Είσοδος: [1, 0, 0, 0, 1] Έξοδος: 2 Είσοδος: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Έξοδος: 2 Είσοδος: [1, 0, 1, 0] Έξοδος: 1 */

sobes.tech AI

Απάντηση από AI

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

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

  • Пройти по ряду, найти все свободные места (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

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