【leetcode】1288. Remove Covered Intervals

Topics are as follows:

Given a list of intervals, remove all intervals that are covered by another interval in the list. Interval [a,b) is covered by interval [c,d) if and only if c <= a and b <= d.

After doing so, return the number of remaining intervals.

Example 1:

Input: intervals = [[1,4],[3,6],[2,8]]
Output: 2
Explanation: Interval [3,6] is covered by [2,8], therefore it is removed.

Constraints:

  • 1 <= intervals.length <= 1000
  • 0 <= intervals[i][0] < intervals[i][1] <= 10^5
  • intervals[i] != intervals[j] for all i != j

Problem-solving ideas: two-cycle comparison, the index recorded a dictionary can be removed elements.

code show as below:

class Solution(object):
    def removeCoveredIntervals(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: int
        """
        dic = {}
        for i in range(len(intervals)):
            for j in range(i+1,len(intervals)):
                if i == j :continue
                if intervals[i][0] <= intervals[j][0] and intervals[i][1] >= intervals[j][1]:
                    dic[j] = 1
                elif intervals[i][0] >= intervals[j][0] and intervals[i][1] <= intervals[j][1]:
                    dic[i] = 1
        return len(intervals) - len(dic)
        

 

Guess you like

Origin www.cnblogs.com/seyjs/p/12041878.html