Heaters (Easy Google)
Input: [1,2,3],[2]
Output: 1Input: [1,2,3,4],[1,4]
Output: 1Basic Idea:
class Solution { public: int findRadius(vector<int>& houses, vector<int>& heaters) { int i = 0, j = 0; int ret = 0; sort(houses.begin(), houses.end()); sort(heaters.begin(), heaters.end()); while (i < houses.size()) { if (j == heaters.size() || heaters[j] > houses[i]) { if (j == 0) { ret = max(ret, heaters[j] - houses[i]); } else if (j == heaters.size()) { ret = max(ret, abs(heaters[j - 1] - houses[i])); } else { ret = max(ret, min(abs(heaters[j - 1] - houses[i]), heaters[j] - houses[i])); } ++i; } else { ++j; } } return ret; } };
Update: Java
Update: 最新Java写法
Last updated