Sobes.tech
Middle

/* Die Plätze im Kino sind in einer Reihe angeordnet. Der Zuschauer, der gerade angekommen ist, wählt einen Platz, um so weit wie möglich von den anderen Zuschauern in der Reihe zu sitzen. Das heißt, der Abstand vom Platz, an dem er sitzt, zum nächsten Es ist garantiert, dass in der Reihe immer freie Plätze sind und bereits mindestens Schreibe eine Funktion, die, gegeben eine Reihe von Plätzen (ein Array aus Nullen und Einsen) Beispiel: Eingabe: [1, 0, 0, 0, 1] Ausgabe: 2 Eingabe: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Ausgabe: 2 Eingabe: [1, 0, 1, 0] Ausgabe: 1 */

sobes.tech KI

Antwort von 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

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