Intern
func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }
sobes.tech AI
Answer from AI
The maxPlaces function in Go calculates the maximum distance to the nearest element with value 1 in an array of 0s and 1s.
Algorithm idea:
- Iterate through the array, recording the indices of elements with value 1.
- For the first found 1, calculate the distance from the start of the array to it.
- For subsequent 1s, calculate half the distance between the current and previous indices of 1 (since the optimal place for seating will be in the middle).
- At the end, consider the distance from the last 1 to the end of the array.
Example:
type intSlice []int
func max(a, b int) int {
if a > b {
return a
}
return b
}
func maxPlaces(arr []int) int {
maxDistance := 0
prev, first := -1, -1
for i := 0; i < len(arr); i++ {
if arr[i] == 1 {
if first == -1 {
first = i
maxDistance = max(maxDistance, i) // distance from the start
} else {
maxDistance = max(maxDistance, (i - prev) / 2) // half the distance between 1s
}
prev = i
}
}
maxDistance = max(maxDistance, len(arr) - 1 - prev) // distance to the end
return maxDistance
}
Thus, the function finds the maximum possible distance to the nearest occupied seat (1) for seating.