演算法練習 刪除被覆蓋區間

2021-10-04 20:33:47 字數 1274 閱讀 2065

**

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

只有當 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]

獲得區間端點

將各個區間按照左端點進行公升序排列,如果左端點相同的話按照右端點降序排列

原來的區間圖:

排序之後的區間圖:

3.根據排序之後的區間,保證後乙個區間如果右端點較大,那麼它一定不被在他之前的區間包含,以此比較右端點,若下乙個區間的右端點比較小,則其被包含,若不小,則不被包含,且當前右端點記錄值更換

public

static

intremovecoveredintervals

(int

intervals)})

;// 記錄區間數

int count =0;

// 記錄右區間最大點

int max_right =0;

for(

int[

] interval : intervals)

}return count;

}

**

看到這個題之後總覺得不會很難,確實,如果不將其進行排序,遍歷陣列,判斷當前區間是否被包含,就能確定最後剩餘的區間數,但是將其進行了排序之後時間複雜度為:o(nlogn)o(nlogn),

空間複雜度為:o(1)。既節省時間又節省空間的解決問題,這才是努力學習演算法的目的

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

題目 給你乙個區間列表,請你刪除列表中被其他區間所覆蓋的區間。只有當 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 覆...

Leetcode刷題1288 刪除被覆蓋區間

給你乙個區間列表,請你刪除列表中被其他區間所覆蓋的區間。只有當 c a 且 b d 時,我們才認為區間 a,b 被區間 c,d 覆蓋。在完成所有刪除操作後,請你返回列表中剩餘區間的數目。示例 輸入 intervals 1,4 3,6 2,8 輸出 2 解釋 區間 3,6 被區間 2,8 覆蓋,所以它...