Sobes.tech
Intern

""" Kinoda joylar bitta qator shaklida joylashgan. Yangi kelgan tomoshabin joyni tanlaydi, qator bo'ylab boshqa tomoshabinlardan maksimal masofada o'tirish uchun. Ya'ni, u joydan, qaysi joyga o'tiradi, unga eng yaqin tomoshabinga bo'lgan masofa maksimal bo'lishi kerak. Har doim bo'sh joylar borligini va kamida bitta tomoshabin o'tirganligini kafolatlaydi. Berilgan joylar qatori (nol va birlardan iborat massiv) uchun, tanlangan joydan eng yaqin tomoshabinga bo'lgan masofani (o'rindiqlar orasidagi raqamlar soni) qaytaradigan funktsiya yozing. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }

sobes.tech AI

AIdan javob

Biz eng yaxshi (indeks) joyni topishimiz kerak, u eng yaqin band joy (1) dan maksimal minimal masofaga ega. Buning uchun massiv bo'ylab yurib, band joylar orasidagi bo'shliqlarni topamiz va maksimal masofani hisoblaymiz.

Algoritm:

  • Qator bo'ylab yurib, band joylarning indekslarini eslab qolamiz.
  • Uch holatni ko'rib chiqamiz:
    1. Qator boshidagi bo'sh joylar, birinchi band joygacha.
    2. Ikki band joy orasidagi bo'sh joylar.
    3. So'nggi band joydan keyingi qator oxirigacha bo'sh joylar.
  • Band joylar orasidagi bo'shliqlar uchun masofa, bo'sh joyning uzunligining yarmiga teng (yoki pastga qarab yaxlitlangan).
  • Uzoq joylar uchun masofa, bo'sh bo'lakning uzunligiga teng.
  • Topilgan eng katta masofani qaytarish.

Go tilida misol implementatsiya:

func maxPlaces(arr []int) int {
    n := len(arr)
    maxDist := 0
    prev := -1

    for i := 0; i < n; i++ {
        if arr[i] == 1 {
            if prev == -1 {
                // Boshida bo'sh joylar
                maxDist = i
            } else {
                // Orasidagi bo'sh joylar
                dist := (i - prev) / 2
                if dist > maxDist {
                    maxDist = dist
                }
            }
            prev = i
        }
    }

    // Oxirida bo'sh joylar
    if n-1-prev > maxDist {
        maxDist = n - 1 - prev
    }

    return maxDist
}

Ushbu kod eng yaqin tomoshabinga bo'lgan maksimal masofani qaytaradi, yangi tomoshabin joylashadigan joy uchun.