有一些房屋和供暖设备的位置,他们在一条直线上分布,需要计算供暖设备的最小供暖半径,我们可以看作数组进行处理,
例如,房屋位置数组a[]{1,3,5,8,12,15,16,18,19,22},供暖设备位置b[]{12,19}
我们找到每个房屋的最近的供暖设备,计算他们的距离,然后在所有房屋的这些距离中选取最大的值。
public int search(){
int max = 0;
sort(b); //首先排序供暖设备位置
for(int i=0; i<a.length; i++){
int index = binary(b,a[i]); //找到当前房屋最近的供暖设备位置
int d = min((a[i] - b[index]),(b[index] - a[i])); //计算当前房屋与供暖设备的最近距离
//如果当前距离大于之前的最大值,将该值赋给最大值
if(max < d){
max = d;
}
}
return max;
}