Middle
/* Kinoda yerlər tək sətirdə yerləşir. Yeni gələn tamaşaçı yer seçir ki, digər tamaşaçılardan ən uzaq məsafədə otursun. Yəni, oturacağı yer ilə ən yaxın tamaşaçı arasındakı məsafə maksimum olmalıdır. Həmişə boş yerlər olduğu və ən azı bir tamaşaçının oturduğu təmin edilir. Verilən yer sırasına (sıfırlar və birlərdən ibarət massiv) əsaslanaraq, seçilmiş yerdən olan məsafəni qaytaran funksiya yazın. Input: [1, 0, 0, 0, 0, 1] Output: 2 Input: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Output: 2 Input: [1, 0, 1, 0] Output: 1 */
sobes.tech Süni İntellekt
AI-dan cavab
Funksiya boş yer (sıfır indeksli) tapmalı və ən yaxın dolu yer (bir) ilə olan məsafənin maksimum olduğu yeri tapmalıdır.
Həll ideyası:
- Array üzərində keçin, hər boş yer üçün ən yaxın dolu yerə olan məsafəni hesablayın.
- Bu maksimum məsafəni qaytarın.
Optimal üsul — bir keçiddə solda və sağda ən yaxın birlərə olan məsafələrin sayılması.
Go dilində nümunə:
func maxDistance(oturacaq []int) int {
n := len(oturacaq)
solDist := make([]int, n)
sagDist := make([]int, n)
// Solda ən yaxın dolu yerə olan məsafələri doldurun
dist := n
for i := 0; i < n; i++ {
if oturacaq[i] == 1 {
dist = 0
} else {
dist++
}
solDist[i] = dist
}
// Sağda ən yaxın dolu yerə olan məsafələri doldurun
dist = n
for i := n - 1; i >= 0; i-- {
if oturacaq[i] == 1 {
dist = 0
} else {
dist++
}
sagDist[i] = dist
}
maxDist := 0
for i := 0; i < n; i++ {
if oturacaq[i] == 0 {
// Ən yaxın izləyiciyə olan minimal məsafə
d := solDist[i]
if sagDist[i] < d {
d = sagDist[i]
}
if d > maxDist {
maxDist = d
}
}
}
return maxDist
}
Beləliklə, funksiya seçilmiş yer üçün ən yaxın izləyiciyə olan maksimum məsafəni qaytaracaq.