Sobes.tech
Middle

/* Kinno kohad on paigutatud ühte ritta. Külastaja, kes just saabub, valib koha, et istuda võimalikult kaugel teistest vaatajatest real. See tähendab, et kaugus kohast, kus ta istub, lähima kohani On garanteeritud, et real on alati vabad kohad ja juba istub vähemalt Kirjutage funktsioon, mis põhineb antud kohtade real (nullide ja ühekordsete massiiv) Näide: Sisend: [1, 0, 0, 0, 1] Väljund: 2 Sisend: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Väljund: 2 Sisend: [1, 0, 1, 0] Väljund: 1 */

sobes.tech AI

Vastus AI-lt

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

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

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

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