LeetCode 435 無重疊區間

2021-10-08 18:43:01 字數 1492 閱讀 5562

題目:給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。

這道題和合併區間有點類似。但合併區間要求求出合併之後的區間集合。這道題是要你刪除最小數量的一些區間,使得剩下的區間不重合。

class

solution

:def

eraseoverlapintervals

(self, intervals: list[list[

int]])

->

int:

n =len(intervals)

if n ==0:

return

0 intervals.sort(key=

lambda x: x[0]

) dp =[0

]* n

dp[0]

=1ans =

1for i in

range(1

, n)

: cur = intervals[i]

temp =

0for j in

range

(i):

prev = intervals[j]

if prev[1]

>cur[0]

:pass

else

: temp =

max(temp, dp[j]

) dp[i]

= temp+

1 ans =

max(temp+

1, ans)

# print(dp)

return n -ans

class

solution

:def

eraseoverlapintervals

(self, intervals: list[list[

int]])

->

int:

iflen

(intervals)==0

:return

0 intervals.sort(key=

lambda x: x[1]

)# 對結束時間排序

cnt =

0 end =

-float

('inf'

)for i in

range

(len

(intervals)):

if end <= intervals[i][0

]:# 不重疊

cnt+=

1# 保留

if end < intervals[i][1

]:# 更新當前最大的結束時間

end = intervals[i][1

]return

len(intervals)

- cnt

leetcode 435 無重疊區間

給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。輸入 1,2 1,2 1,2 輸出 2 解釋 你需要移除兩個 1,2 來使剩下的區間沒有重疊。輸入 1,2 2,3 輸出 0 解釋 你不需要...

leetcode435無重疊空間

給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 可以認為區間的終點總是大於它的起點。區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1,2 1,...

LeetCode 435 無重疊區間

這道題目是在給定的集合中找到需要去掉的區間最小數量,使得剩餘區間互相不重疊,題目如下 這道題目似乎無從下手,因為找重疊的區域確實是比較麻煩的。我們可以嘗試用貪心演算法來解答這個問題,我們假設有集合 int erva ls 1,2 3 5 2,3 3 6 7,8 6 7 intervals 1,2 3...