435. Non-overlapping Intervals

2016-12-17  本文已影响0人  阿团相信梦想都能实现
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
上一篇 下一篇

猜你喜欢

热点阅读