2020年2月6日
1.タイトル説明
输入房屋和供暖器的位置,输出供暖器的最小加热半径
2.問題の解決
供暖器覆盖了所有房屋相当于每个房屋在最小加热半径内都有供暖器即可,首先求出每一个房屋与
最近供暖器的距离,然后求出所有最小值的最大值即可。
3.コード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int findRadius(vector<int>& houses, vector<int>& heaters) {
sort(houses.begin(),houses.end());
sort(heaters.begin(),heaters.end());
int l1=houses.size(),l2=heaters.size();
int x[25010],mm;
for (int i=0;i<l1;i++){
mm=0x7fffffff;
int j=0;
while (j<l2&&houses[i]>=heaters[j]) j++;
if (j-1>=0) mm=min(mm,houses[i]-heaters[j-1]);
if (j<l2) mm=min(mm,heaters[j]-houses[i]);
x[i]=mm;
}
mm=0;
for (int i=0;i<l1;i++){
mm=max(mm,x[i]);
}
return mm;
}
};
int main(){
Solution s;
int a[4]={1,2,3,4},b[2]={1,4};
vector<int>v1(a,a+4),v2(b,b+2);
cout<<s.findRadius(v1,v2)<<endl;
return 0;
}