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.