go: add «1552. Magnetic Force Between Two Balls»

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-06-20 19:57:55 +02:00
parent d1e6ee86c5
commit 3ca391ca27
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,41 @@
package main
import "slices"
func maxDistance(position []int, m int) int {
placed := func(distance int) bool {
counter := 1
last := position[0]
for _, p := range position {
if p-last >= distance {
counter++
last = p
}
if counter >= m {
return true
}
}
return false
}
slices.Sort(position)
low := 1
high := (position[len(position)-1] - position[0]) / (m - 1)
foundMax := 1
for low <= high {
mid := low + (high-low)/2
if placed(mid) {
foundMax = mid
low = mid + 1
} else {
high = mid - 1
}
}
return foundMax
}