排序 中等 1288 刪除被覆蓋區間

2021-10-20 11:59:45 字數 1743 閱讀 8434

【題目】

給你乙個區間列表,請你刪除列表中被其他區間所覆蓋的區間。

只有當 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 覆...