Skip to content

Commit 0b63b88

Browse files
committed
Time: 2 ms (76.11%) | Memory: 63.3 MB (47.78%) - LeetSync
1 parent d9bf8f3 commit 0b63b88

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public int maxFreeTime(int eventTime, int k, int[] startTime, int[] endTime) {
3+
int n = startTime.length;
4+
int[] breaks = new int[n + 1];
5+
6+
// Initial gap before the first event
7+
breaks[0] = startTime[0];
8+
9+
// Get all gaps
10+
for (int i = 1; i < n; i++) {
11+
breaks[i] = startTime[i] - endTime[i - 1];
12+
}
13+
breaks[n] = eventTime - endTime[n - 1]; // Remaining time between last event and end of the day
14+
15+
// Compute first possible k sum of time breaks
16+
int windowSum = 0;
17+
for (int i = 0; i <= k && i < breaks.length; i++) {
18+
windowSum += breaks[i];
19+
}
20+
21+
// Use the sliding window to compare all possible breaks sums
22+
int maxFreeTime = windowSum;
23+
for (int i = k + 1; i < breaks.length; i++) {
24+
windowSum += breaks[i] - breaks[i - k - 1];
25+
maxFreeTime = Math.max(maxFreeTime, windowSum);
26+
}
27+
return maxFreeTime;
28+
}
29+
}

0 commit comments

Comments
 (0)