Maximum Running Time of N Computers LeetCode solution in Java

1
class Solution {
2

3
private boolean canFit(int n, long k, int[] batteries) {
4
long currBatSum = 0;
5
long target = n * k;
6

7
for (int bat : batteries) {
8
if (bat < k) {
9
currBatSum += bat;
10
} else {
11
currBatSum += k;
12
}
13

14
if (currBatSum >= target) {
15
return true;
16
}
17
}
18

19
return currBatSum >= target;
20
}
21

22
public long maxRunTime(int n, int[] batteries) {
23
long batSum = 0;
24
for (int bat : batteries) {
25
batSum += bat;
26
}
27

28
long lower = 0;
29
long upper = batSum / n;
30
long res = -1;
31

32
// binary search
33
while (lower <= upper) {
34
long mid = lower + (upper - lower) / 2;
35

36
if (canFit(n, mid, batteries)) {
37
res = mid;
38
lower = mid + 1;
39
} else {
40
upper = mid - 1;
41
}
42
}
43

44
return res;
45
}
46
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0