Skip to content

Commit ba5b236

Browse files
committed
Dec 8
1 parent 5f8f822 commit ba5b236

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

2024-12-December-LeetCoding-Challenge/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
| December 5 | [2337. Move Pieces to Obtain a String](https://leetcode.com/problems/move-pieces-to-obtain-a-string/) | Medium | Unsolved |
1111
| December 6 | [2554. Maximum Number of Integers to Choose From a Range I](https://leetcode.com/problems/maximum-number-of-integers-to-choose-from-a-range-i/) | Medium | Solved |
1212
| December 7 | [1760. Minimum Limit of Balls in a Bag](https://leetcode.com/problems/minimum-limit-of-balls-in-a-bag/) | Medium | Solved |
13-
| December 8 | []() | | |
13+
| December 8 | [2054. Two Best Non-Overlapping Events](https://leetcode.com/problems/two-best-non-overlapping-events/) | Medium | Solved |
1414
| December 9 | []() | | |
1515
| December 10 | []() | | |
1616
| December 11 | []() | | |
@@ -39,5 +39,5 @@
3939
| Level | Problems | Solved | Unsolved |
4040
| --- | --- | --- | --- |
4141
| Easy | 2 | 2 | 0 |
42-
| Medium | 5 | 4 | 1 |
42+
| Medium | 6 | 5 | 1 |
4343
| Hard | 0 | 0 | 0 |
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from bisect import bisect
2+
from itertools import accumulate
3+
from typing import List
4+
5+
6+
class Solution:
7+
def maxTwoEvents(self, events: List[List[int]]) -> int:
8+
n = len(events)
9+
# first sort by value
10+
events.sort(key=lambda event: event[2], reverse=True)
11+
# then sort by start times
12+
events.sort(key=lambda event: event[0])
13+
start_times = [event[0] for event in events]
14+
max_val = float('-inf')
15+
max_indices = accumulate([event[2] for event in events][::-1], max)
16+
max_indices = list(max_indices)[::-1]
17+
18+
for _, end, value in events:
19+
max_val = max(max_val, value)
20+
index = bisect(start_times, end)
21+
if index < n:
22+
max_val = max(max_val, value+max_indices[index])
23+
return max_val
24+
25+
26+
def main():
27+
events = [[1, 3, 2], [4, 5, 2], [2, 4, 3]]
28+
assert Solution().maxTwoEvents(events) == 4
29+
30+
events = [[1, 3, 2], [4, 5, 2], [1, 5, 5]]
31+
assert Solution().maxTwoEvents(events) == 5
32+
33+
events = [[1, 5, 3], [1, 5, 1], [6, 6, 5]]
34+
assert Solution().maxTwoEvents(events) == 8
35+
36+
37+
if __name__ == '__main__':
38+
main()

0 commit comments

Comments
 (0)