使用贪心思想,先按照end排序,然后依次寻找下一个(结束时前最早的)不重叠的区域,这样就得到了数量最多的构成不重叠的区域的数量,再用总数量减去最大不重叠区域的数量,就得到了最少的会引起重叠的区域的数量。

 1 class Solution:
 2     def eraseOverlapIntervals(self, intervals: 'List[Interval]') -> int:
 3         n = len(intervals)
 4         if n <= 1:
 5             return 0
 6         l = sorted(intervals,key=lambda a:a.end)
 7         pre = l[0]
 8         count = 1
 9         for i in range(1,len(l)):
10             if l[i].start >= pre.end:
11                 count+=1
12                 pre = l[i]
13 
14         return n-count

 

posted on 2019-02-25 19:05  Sempron2800+  阅读(119)  评论(0编辑  收藏  举报