func findRadius(houses []int, heaters []int) (radius int) { sort.Ints(heaters) n := len(heaters) for _, i := range houses { beg, end := 0, n-1 for beg <= end { mid := beg + (end-beg)/2 if heaters[mid] < i { beg = mid + 1 } else { end = mid - 1 } } if beg == 0 { radius = maxInt(radius, heaters[beg]-i) } else if beg == n { radius = maxInt(radius, i-heaters[n-1]) } else { radius = maxInt(radius, minInt(i-heaters[beg-1], heaters[beg]-i)) } } return } func minInt(x, y int) int { if x < y { return x } return y } func maxInt(x, y int) int { if x < y { return y } return x }