Sobes.tech
Middle

/* Kinā ir vietas, kas izvietotas vienā rindā. Skatītājs, kurš tikko ieradies, izvēlas vietu, lai sēdētu pēc iespējas tālāk no citiem skatītājiem rindā. Tas nozīmē, attālums no vietas, kur viņš sēdēs, līdz tuvākajai Ir garantēts, ka vienmēr rindā ir brīvas vietas un jau sēž vismaz Uzrakstiet funkciju, kas, pamatojoties uz dotu vietu rindu (nulles un vieninieku masīvs) Piemērs: Ievade: [1, 0, 0, 0, 1] Izvade: 2 Ievade: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Izvade: 2 Ievade: [1, 0, 1, 0] Izvade: 1 */

sobes.tech AI

Atbilde no 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

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