435. Non-overlapping Intervals

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

你可能感兴趣的:(435. Non-overlapping Intervals)