LeetCode 475. 供暖器
原题链接
中等
作者:
Zh1995
,
2020-10-17 11:08:03
,
所有人可见
,
阅读 361
class Solution {
boolean check(int mid,int h[],int he[]){
int n=he.length;
for(int i=0,j=0;i<h.length;i++){
while(j<n && Math.abs(h[i]-he[j])>mid) j++;
if(j==n) return false;
}
return true;
}
public int findRadius(int[] h, int[] he) {
Arrays.sort(h); Arrays.sort(he);
//1.最小供暖半径是0,最大供暖半径是需要覆盖区间中所有的值,也就是数据范围
int l=0,r=(int)(1e9);
//2.二段性,右侧都满足可以覆盖区域中所有的点,左侧不满足覆盖区域中所有的点
while(l<r){
int mid=l+r>>1;
if(check(mid,h,he)) r=mid;
else l=mid+1;
}
return l;
}
}