Middle
/* Кинотеатрдағы орындар бір қатарда орналасқан. Жаңа келген көрермен орын таңдайды, басқалардан мүмкіндігінше алыс отырғысы келеді. Яғни, ол отырған орын мен ең жақын тұрған орын арасындағы қашықтық Кез келген уақытта бос орындар бар екендігі және кемінде Функция жаз, ол берілген орындар қатарын (нөлдер мен бірліктерден тұратын массив) қабылдайды. Мысал: Кіріс: [1, 0, 0, 0, 1] Шығыс: 2 Кіріс: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Шығыс: 2 Кіріс: [1, 0, 1, 0] Шығыс: 1 */
sobes.tech AI
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
Осылайша, функция орынның индексін қайтарады, онда көрермен басқа орындардан ең алыс отырады.