Heaters LeetCode solution in Java

1
class Solution {
2
public boolean can(int r, int[] houses, int[] heaters) {
3
int prevHouseIdx = -1;
4
for (int i = 0; i < heaters.length; i++) {
5
int from = heaters[i] - r;
6
int to = heaters[i] + r;
7
for (int j = prevHouseIdx + 1; j < houses.length; j++) {
8
if (houses[j] <= to && houses[j] >= from) {
9
prevHouseIdx++;
10
} else break;
11
}
12
if (prevHouseIdx >= houses.length - 1) return true;
13
}
14
return prevHouseIdx >= houses.length - 1;
15
}
16

17
public int findRadius(int[] houses, int[] heaters) {
18
Arrays.sort(houses);
19
Arrays.sort(heaters);
20
int lo = 0, hi = 1000000004;
21
int mid, ans = hi;
22
while (lo <= hi) {
23
mid = (lo + hi) / 2;
24
if (can(mid, houses, heaters)) {
25
ans = mid;
26
hi = mid - 1;
27
} else lo = mid + 1;
28
}
29
return ans;
30
}
31
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0