mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Update 0056.合并区间.md
This commit is contained in:
@ -141,18 +141,24 @@ class Solution {
|
|||||||
### Python
|
### Python
|
||||||
```python
|
```python
|
||||||
class Solution:
|
class Solution:
|
||||||
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
|
def merge(self, intervals):
|
||||||
if len(intervals) == 0: return intervals
|
|
||||||
intervals.sort(key=lambda x: x[0])
|
|
||||||
result = []
|
result = []
|
||||||
result.append(intervals[0])
|
if len(intervals) == 0:
|
||||||
|
return result # 区间集合为空直接返回
|
||||||
|
|
||||||
|
intervals.sort(key=lambda x: x[0]) # 按照区间的左边界进行排序
|
||||||
|
|
||||||
|
result.append(intervals[0]) # 第一个区间可以直接放入结果集中
|
||||||
|
|
||||||
for i in range(1, len(intervals)):
|
for i in range(1, len(intervals)):
|
||||||
last = result[-1]
|
if result[-1][1] >= intervals[i][0]: # 发现重叠区间
|
||||||
if last[1] >= intervals[i][0]:
|
# 合并区间,只需要更新结果集最后一个区间的右边界,因为根据排序,左边界已经是最小的
|
||||||
result[-1] = [last[0], max(last[1], intervals[i][1])]
|
result[-1][1] = max(result[-1][1], intervals[i][1])
|
||||||
else:
|
else:
|
||||||
result.append(intervals[i])
|
result.append(intervals[i]) # 区间不重叠
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Go
|
### Go
|
||||||
|
Reference in New Issue
Block a user