-
-
Notifications
You must be signed in to change notification settings - Fork 297
/
Copy path56.py
65 lines (50 loc) · 1.8 KB
/
56.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
__________________________________________________________________________________________________
sample 36 ms submission
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
sort_list = sorted(intervals)
merged = []
for i in sort_list:
if not merged or merged[-1][1] < i[0]:
merged.append(i)
else:
merged[-1][1] = max(merged[-1][1], i[1])
return merged
__________________________________________________________________________________________________
sample 13856 kb submission
'''
Merge overlaping intervals:
Input: [[1,3],[2,6],[8,10],[15,18]]
[[1,6], [8,10], [15,18]]
^ ^
[[1,3], [1,6]]
Output: [[1,6],[8,10],[15,18]]
1) sort by start times:
intervals.sort()
2) if overlap --> merge() and append res
else --> append each interval
p_first ++
p_second ++
s1 -------- e1
s2 ----------e2
'''
# Definition for an interval.
# class Interval:
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class Solution:
def merge(self, intervals):
intervals.sort()
merged = []
for interval in intervals:
# if the list of merged intervals is empty or if the current
# interval does not overlap with the previous, simply append it.
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
# otherwise, there is overlap, so we merge the current and previous
# intervals.
merged[-1][1] = max(merged[-1][1], interval[1])
return merged
__________________________________________________________________________________________________