Sobes.tech
Middle

/* Miejsca w kinie są ustawione w jednym rzędzie. Widz, który właśnie przyszedł, wybiera miejsce, aby siedzieć jak najdalej od innych widzów w rzędzie. Czyli odległość od tego miejsca, na którym usiądzie, do najbliższego Gwarantuje się, że w rzędzie zawsze są wolne miejsca i już siedzi co najmniej Napisz funkcję, która na podstawie podanego rzędu miejsc (tablicy zer i jedynek) Przykład: Wejście: [1, 0, 0, 0, 1] Wyjście: 2 Wejście: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Wyjście: 2 Wejście: [1, 0, 1, 0] Wyjście: 1 */

sobes.tech AI

Odpowiedź od 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

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