AC Java solution with Binary Search

The idea is to use binary search to find the proper radius. Note that the minimum is 0 (rather than 1), and the maximum is Math.max(houses[house_num-1], heaters[heater_num-1]) - Math.min(houses[0], heaters[0]), since some heaters may be beyond rightmost houses.

Then for each middle radius, check whether it is a valid radius. If it's not, then min = mid+1. Otherwise, to check whether middle radius is the minimum one.