56. Merge Intervals
https://leetcode.com/problems/merge-intervals/
solution
根据起点或终点排序, 根据上一个终点和这一个起点的关系判断有无overlap
注意循环的控制方式,尤其是用输入list和输出list进行比较
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals = sorted(intervals, key=lambda x: x[0])
res = []
for i in intervals:
if res and i[0] <= res[-1][1]:
res[-1][1] = max(i[1], res[-1][1])
else:
res.append(i)
return res时间复杂度:O(nlogn) 空间复杂度:O(n)
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key=lambda x: x[0])
res = [intervals[0]]
for i in range(1, len(intervals)):
if intervals[i][0] <= res[-1][1]:
res[-1][1] = max(res[-1][1], intervals[i][1])
else:
res.append(intervals[i])
return resfollow up - 间隔类题目
435. Non-overlapping Intervals
和上题思路一样,排序后如果发现有重叠,那么按照贪心把重叠中更长的项删除
时间复杂度:O() 空间复杂度:O()
时间复杂度:O() 空间复杂度:O()
时间复杂度:O() 空间复杂度:O()
1288. Remove Covered Intervals
时间复杂度:O(sort) 空间复杂度:O(1)
452. Minimum Number of Arrows to Burst Balloons
986. Interval List Intersections
时间复杂度:O(n) 空间复杂度:O(n)
Last updated