【leetcode】1288. Remove Covered Intervals

题目如下:

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

解题思路:两层循环比较一下,用字典记录可以被删除掉的元素的下标。

代码如下:

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)
        

 

posted @ 2019-12-15 08:58  seyjs  阅读(574)  评论(0编辑  收藏  举报