Sobes.tech
Middle

/* De plaatsen in de bioscoop zijn in één rij gerangschikt. De bezoeker die net is aangekomen, kiest een plek, om zo ver mogelijk van de andere bezoekers in de rij te zitten. Dat wil zeggen, de afstand van de plek waar hij gaat zitten tot de dichtstbijzijnde Het is gegarandeerd dat er altijd vrije plaatsen in de rij zijn en dat er al minstens Schrijf een functie die, gegeven een rij van plaatsen (een array van nullen en enen) Voorbeeld: Invoer: [1, 0, 0, 0, 1] Uitvoer: 2 Invoer: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Uitvoer: 2 Invoer: [1, 0, 1, 0] Uitvoer: 1 */

sobes.tech AI

Antwoord van 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

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