【題目】
給你乙個區間列表,請你刪除列表中被其他區間所覆蓋的區間。
只有當 c <= a 且 b <= d 時,我們才認為區間 [a,b) 被區間 [c,d) 覆蓋。
在完成所有刪除操作後,請你返回列表中剩餘區間的數目。
【示例】
輸入:intervals = [[1,4],[3,6],[2,8]]
輸出:2
解釋:區間 [3,6] 被區間 [2,8] 覆蓋,所以它被刪除了。
【提示】
1 <= intervals.length <= 1000
0 <= intervals[i][0] < intervals[i][1] <= 10^5
對於所有的 i != j:intervals[i] != intervals[j]
【**】
【python】
class
solution
:def
removecoveredintervals
(self, intervals: list[list[
int]])
->
int:
flag=[1
]*len(intervals)
for i in
range
(len
(intervals)):
if flag[i]==1
:for j in
range
(i+1
,len
(intervals)):
if intervals[i][0
]<=intervals[j][0
]and intervals[i][1
]>=intervals[j][1
]:flag[j]=0
elif intervals[i][0
]>=intervals[j][0
]and intervals[i][1
]<=intervals[j][1
]:flag[i]=0
break
return
sum(flag)
【方法2】
先排序再判斷
執行用時:
52 ms, 在所有 python3 提交中擊敗了51.94%的使用者
記憶體消耗:
15.3 mb, 在所有 python3 提交中擊敗了10.35%的使用者
class
solution
:def
removecoveredintervals
(self, intervals: list[list[
int]])
->
int:
n =len(intervals)
intervals.sort(key=
lambda u:
(u[0],
-u[1])
)print
(intervals)
ans, rmax = n, intervals[0]
[1]for i in
range(1
, n)
:if intervals[i][1
]<= rmax:
ans -=
1else
: rmax =
max(rmax, intervals[i][1
])return ans
Leetcode刷題1288 刪除被覆蓋區間
給你乙個區間列表,請你刪除列表中被其他區間所覆蓋的區間。只有當 c a 且 b d 時,我們才認為區間 a,b 被區間 c,d 覆蓋。在完成所有刪除操作後,請你返回列表中剩餘區間的數目。示例 輸入 intervals 1,4 3,6 2,8 輸出 2 解釋 區間 3,6 被區間 2,8 覆蓋,所以它...
演算法練習 刪除被覆蓋區間
給你乙個區間列表,請你刪除列表中被其他區間所覆蓋的區間。只有當 c a 且 b d 時,我們才認為區間 a,b 被區間 c,d 覆蓋。在完成所有刪除操作後,請你返回列表中剩餘區間的數目。示例 輸入 intervals 1,4 3,6 2,8 輸出 2 解釋 區間 3,6 被區間 2,8 覆蓋,所以它...
二 刪除被覆蓋區間(Biweekly15)
題目描述 給你乙個區間列表,請你刪除列表中被其他區間所覆蓋的區間。只有當 c a 且 b d 時,我們才認為區間 a,b 被區間 c,d 覆蓋。在完成所有刪除操作後,請你返回列表中剩餘區間的數目。示例 輸入 intervals 1,4 3,6 2,8 輸出 2 解釋 區間 3,6 被區間 2,8 覆...