Middle
import "fmt" func maxDistants(arr []int) int { maxDist := 0 lastOne := -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if lastOne == -1 { maxDist = i } else { dist := (i - lastOne) / 2 if dist > maxDist { maxDist = dist } } lastOne = i } } if arr[len(arr)-1] == 0 { dist := len(arr) - 1 - lastOne if dist > maxDist { maxDist = dist } } return maxDist } func main() { fmt.Println(maxDistants([]int{1, 0, 0, 0, 1})) }
sobes.tech AI
Ҷавоб аз AI
Функсияи maxDistants дар Go ҳисоб мекунад, ки дар масиве аз 0 ва 1, ки максималӣ аст, то ба элементи 1-и наздиктарин чӣ қадар масофа аст. Ҳадаф ин аст, ки ҷойро пайдо кунем, ки дар он метавон 1 гузошт, то ки масофа ба 1-и наздиктарин максималӣ бошад.
Тавзеҳоти логика:
- тағйирёбандаи
lastOneнишон медиҳад, ки охирин 1 дар кадом индекс қарор дорад. - Дар ҳангоми гузаштан аз масив, агар 1 пайдо шавад:
- Агар ин аввалин 1 бошад, масофаи максималӣ ин индекс аст (масофа аз оғоз).
- Дар дигар ҳолат, мо нисфи масофаро байни 1-и ҳозира ва гузашта ҳисоб мекунем (зеро метавон онро дар миёна ҷойгир кард).
- Пас аз гузаштан, агар дар тарафи рост аз 1 охирин нолҳо бошанд, масофаи максималӣ нав карда мешавад.
Маслиҳат барои истифода:
package main
import "fmt"
func maxDistants(arr []int) int {
maxDist := 0
lastOne := -1
for i := 0; i < len(arr); i++ {
if arr[i] == 1 {
if lastOne == -1 {
maxDist = i
} else {
dist := (i - lastOne) / 2
if dist > maxDist {
maxDist = dist
}
}
lastOne = i
}
}
if arr[len(arr)-1] == 0 {
dist := len(arr) - 1 - lastOne
if dist > maxDist {
maxDist = dist
}
}
return maxDist
}
func main() {
fmt.Println(maxDistants([]int{1, 0, 0, 0, 1})) // 2
}
Ин код дуруст барои ёфтани масофаи максималӣ то ба 1-и наздиктарин кор мекунад, бо дар назар гирифтани канорҳои масив.