public int findRadius(int[] houses, int[] heaters) {
for (int house : houses) {
index = binarySearch(heaters, house);
int distToLeftHeater = index >= 1 ? house - heaters[index - 1] : Integer.MAX_VALUE;
int distToRightHeater = index < heaters.length ? heaters[index] - house : Integer.MAX_VALUE;
res = Math.max(res, Math.min(distToLeftHeater, distToRightHeater));
public int binarySearch(int[] heaters, int target) {
int start = 0, end = heaters.length - 1, mid = 0;
while (start + 1 < end) {
mid = start + (end - start) / 2;
if (heaters[mid] < target) {
if (heaters[start] >= target) {
else if (heaters[end] >= target) {