题目如下:
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 ifc <= a
andb <= 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 alli != 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)