Intern
""" Кинотеатрдаги ўринлар бир қаторда жойлашган. Яна келган томошабин ўрнига танлайди, қолган томошабинлардан максимал қашықликда ўтириш учун. Яъни, у ўриндан, эн яқин томошабинга бўлган масофа максимал бўлиши керак. Гарант қилинади, ҳар доим бўш ўринлар бор ва энг камида бир томошабин ўтирган. Берилган ўринлар қатори (ноллар ва бирлар массиви) бўйича, танланган ўриндан энг яқин томошабинга бўлган масофани (ўринлар орасидаги бўшликлар сони) қайтарувчи функция ёзинг. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """
sobes.tech AI
Ҷавоб аз AI
go package main
import ( "fmt" "math" )
func maxDistance(seats []int) int { maxDist := 0 lastOccupied := -1
for i, seat := range seats {
if seat == 1 {
if lastOccupied == -1 {
// арақашықтықтан басталуынан бірінші орынға дейін
maxDist = i
} else {
// арақашықтық екі орын арасында
midDist := (i - lastOccupied) / 2
if midDist > maxDist {
maxDist = midDist
}
}
lastOccupied = i
}
}
// соңғы орыннан соңына дейінгі арақашықтық
tailDist := len(seats) - 1 - lastOccupied
if tailDist > maxDist {
maxDist = tailDist
}
return maxDist
}
func main() { fmt.Println(maxDistance([]int{1, 0, 0, 0, 1})) // 2 fmt.Println(maxDistance([]int{1, 0, 1, 0, 0, 1, 0, 0, 1})) // 2 fmt.Println(maxDistance([]int{1, 0, 1, 0})) // 1 }
Тайлбар:
- Мо илэрч, хамгийн сүүлчийн эзэмшсэн байрны индексийг санаж байна.
- Тус байр бүрийн хувьд, өмнөх байртайх нь зайг тооцоолно, тэгээд хагасийг нь авна (хамгийн хол зайтай байр).
- Мөн, эхлэлээс эхний эзэмшсэн байр хүртэлх зай, хамгийн сүүлчийн эзэмшсэн байрнаас төгсгөл хүртэлх зайг авч үзнэ.
- Эдгээрээс хамгийн ихийг буцаана.