475.供暖器
阿新 • • 發佈:2018-12-07
冬季已經來臨。 你的任務是設計一個有固定加熱半徑的供暖器向所有房屋供暖。
現在,給出位於一條水平線上的房屋和供暖器的位置,找到可以覆蓋所有房屋的最小加熱半徑。
所以,你的輸入將會是房屋和供暖器的位置。你將輸出供暖器的最小加熱半徑。
說明:
- 給出的房屋和供暖器的數目是非負數且不會超過 25000。
- 給出的房屋和供暖器的位置均是非負數且不會超過10^9。
- 只要房屋位於供暖器的半徑內(包括在邊緣上),它就可以得到供暖。
- 所有供暖器都遵循你的半徑標準,加熱的半徑也一樣。
示例 1:
輸入: [1,2,3],[2] 輸出: 1 解釋: 僅在位置2上有一個供暖器。如果我們將加熱半徑設為1,那麼所有房屋就都能得到供暖。
示例 2:
輸入: [1,2,3,4],[1,4] 輸出: 1 解釋: 在位置1, 4上有兩個供暖器。我們需要將加熱半徑設為1,這樣所有房屋就都能得到供暖。
class Solution {
public:
int findRadius(vector<int>& houses, vector<int>& heaters) {
int n = heaters.size(), j = 0, res = 0;
sort(houses.begin(), houses.end());
sort(heaters.begin(), heaters.end());
for (int i = 0; i < houses.size(); ++i) {
int cur = houses[i];
while (j < n - 1 && abs(heaters[j + 1] - cur) <= abs(heaters[j] - cur)) {
++j;
}
res = max(res, abs(heaters[j] - cur));
}
return res;
}
};