Skip to content

Commit 8090ecb

Browse files
committed
Jul 09
1 parent bf23d8b commit 8090ecb

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed

2025-07-July-LeetCoding-Challenge/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
| July 06 | [1865. Finding Pairs With a Certain Sum](https://leetcode.com/problems/finding-pairs-with-a-certain-sum/) | Medium | Solved |
1313
| July 07 | [1353. Maximum Number of Events That Can Be Attended](https://leetcode.com/problems/maximum-number-of-events-that-can-be-attended/) | Medium | Solved |
1414
| July 08 | [1751. Maximum Number of Events That Can Be Attended II](https://leetcode.com/problems/maximum-number-of-events-that-can-be-attended-ii/) | Hard | Solved |
15-
| July 09 | []() | | |
15+
| July 09 | [3439. Reschedule Meetings for Maximum Free Time I](https://leetcode.com/problems/reschedule-meetings-for-maximum-free-time-i/) | Medium | Solved |
1616
| July 10 | []() | | |
1717
| July 11 | []() | | |
1818
| July 12 | []() | | |
@@ -41,5 +41,5 @@
4141
| Level | Problems | Solved | Unsolved |
4242
| --- | --- | --- | --- |
4343
| Easy | 3 | 3 | 0 |
44-
| Medium | 2 | 2 | 0 |
44+
| Medium | 3 | 3 | 0 |
4545
| Hard | 3 | 1 | 2 |
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Solution:
2+
def maxFreeTime(self, eventTime: int, k: int, startTime: list[int], endTime: list[int]) -> int:
3+
gaps = [startTime[0]] # 0 - first meeting
4+
for i in range(1, len(startTime)):
5+
gaps.append(startTime[i] - endTime[i - 1]) # previous meeting - current meeting
6+
gaps.append(eventTime - endTime[-1]) # last meeting - end
7+
8+
# sliding window approach -> k+1 gaps
9+
left, right = 0, 0
10+
curr_gap, max_gap = 0, 0
11+
while right < len(gaps):
12+
curr_gap += gaps[right]
13+
if right - left > k:
14+
# sliding window of size k+1
15+
curr_gap -= gaps[left]
16+
left += 1
17+
max_gap = max(max_gap, curr_gap)
18+
right += 1
19+
return max_gap
20+
21+
22+
def main():
23+
eventTime = 5
24+
k = 1
25+
startTime = [1, 3]
26+
endTime = [2, 5]
27+
assert Solution().maxFreeTime(eventTime, k, startTime, endTime) == 2
28+
29+
eventTime = 10
30+
k = 1
31+
startTime = [0, 2, 9]
32+
endTime = [1, 4, 10]
33+
assert Solution().maxFreeTime(eventTime, k, startTime, endTime) == 6
34+
35+
eventTime = 5
36+
k = 2
37+
startTime = [0, 1, 2, 3, 4]
38+
endTime = [1, 2, 3, 4, 5]
39+
assert Solution().maxFreeTime(eventTime, k, startTime, endTime) == 0
40+
41+
42+
if __name__ == '__main__':
43+
main()

0 commit comments

Comments
 (0)