Sobes.tech
Middle

/* A mozi helyek egy sorban vannak elhelyezve. A néző, aki éppen érkezik, kiválaszt egy helyet, hogy a lehető legtávolabb üljön a többi nézőtől a sorban. Vagyis, a távolság attól a helytől, ahol ülni fog, a legközelebbi Biztosítva van, hogy mindig vannak szabad helyek a sorban, és már ül legalább Írj egy függvényt, amely a megadott helysorozat (nullák és egyek tömbje) alapján Példa: Bemenet: [1, 0, 0, 0, 1] Kimenet: 2 Bemenet: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Kimenet: 2 Bemenet: [1, 0, 1, 0] Kimenet: 1 */

sobes.tech MI

Válasz az MI-től

Feladat — megtalálni a sorban azt a helyet (indexet), ahol egy új néző a lehető legtávolabb fog ülni a már foglalt helyektől.

Megoldási ötlet:

  • Menj végig a soron, keresd meg az összes szabad helyet (0).
  • Minden szabad helyhez számold ki a legközelebbi foglalt hely (1) távolságát.
  • Válaszd ki azt a helyet, ahol ez a távolság a legnagyobb.

Példa Go nyelvű megvalósításra:

func maxDistanceSeat(row []int) int {
    n := len(row)
    maxDist := -1
    seatIndex := -1

    for i := 0; i < n; i++ {
        if row[i] == 0 {
            // Legközelebbi foglalt hely távolságának keresése
            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
}

Használati példa:

row := []int{1, 0, 0, 0, 1}
seat := maxDistanceSeat(row) // seat == 2

Így a függvény visszaadja annak a helynek az indexét, ahol a néző a legmesszebb fog ülni a többitől.