interval scheduling maximization problem
greedy solution
rank the intervals by finishing time
initialize ending time as -inf
if the start time if the interval intersect the last interval's end time , then remove this interval.
reason: after sorting the intervals by their ending time, the intervals that all intersect the ending time of interval x all intersect each other. there will only be one interval in the group that will be in the optimal solution set, therefore, remove all intervals other than x.
# Definition for an interval.
# class Interval(object):
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class Solution(object):
def eraseOverlapIntervals(self, intervals):
"""
:type intervals: List[Interval]
:rtype: int
"""
res=0
end=float('-inf')
intervals.sort(key=lambda x:x.end)
for item in intervals:
if item.start>=end:
end=item.end
else:
res+=1
return res
网友评论