统计要删除的区间的个数。总数减去要删除的区间就是答案
具体是记录一个右端点的值,将区间先按照起点升序再按照终点降序
这样只用比较当前区间的右端点和前面最大右端点的大小
如果小于等于,说明被覆盖了,如果大于更新当前最大的右端点
def removeCoveredIntervals(self, intervals):
"""
:type intervals: List[List[int]]
:rtype: int
"""
#排序,先按照起点升序再按照终点降序
intervals.sort(key = lambda x: (x[0],-x[1]))
n = len(intervals)
res = 0
left = intervals[0][0]
right = intervals[0][1]
for i in range(1,n):
if intervals[i][1] <= right:
res += 1
else:
right = intervals[i][1]
return n - res