LeetCode 56 合併區間

2021-08-31 15:47:49 字數 1342 閱讀 4769

給出乙個區間的集合,請合併所有重疊的區間。

示例 1:

輸入: [[1,3],[2,6],[8,10],[15,18]]

輸出: [[1,6],[8,10],[15,18]]

解釋: 區間[1,3] 和 [2,6] 重疊, 將它們合併為 [1,6].

示例 2:

輸入: [[1,4],[4,5]]

輸出: [[1,5]]

解釋: 區間 [1,4] 和 [4,5] 可被視為重疊區間。

解題思路

1 比較簡單的思路是對每個區間進行遍歷,將和它重疊的區間合併並刪除相應區間。時間複雜度是o(n^2)。

2 第一種思路情況較多,細枝末節很容易出錯。第二種思路是將起點和終點分別排序,若第n+1個起點大於第n個終點,那麼就可以確定乙個合併後的區間。時間複雜度是o(n)。

3 下面給出了兩種思路的實現。

第一種思路:

/**

* definition for an interval.

* public class interval

* interval(int s, int e)

* }*/class solution

interval i2 = intervals.get(j);

if (i1.start == i2.start)

intervals.remove(j);

j--;

}else if (i1.start < i2.start)

else if (i1.end >= i2.start)

}else if (i1.start > i2.start)

else if (i2.end >= i1.start)

}

j++;

}if (!flag)

i++;

}return intervals;

}}

第二種思路:

/**

* definition for an interval.

* public class interval

* interval(int s, int e)

* }*/class solution

arrays.sort(starts);

arrays.sort(ends);

for (int i = 0, j = 0;i < size;i++)

}return result;

}}

Leetcode 56 合併區間

對所有區間按起點位置進行排序 遍歷到k點後的 l,r 已知的包含k點的最大區間 遍歷到k 1點,若該起點屬於 l,r 那麼可能擴充套件這個區間的終點,r max r,k 1點的end definition for an interval.struct interval interval int s,...

LeetCode 56 合併區間

給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。題意還是好理...

Leetcode 56 合併區間

給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。首先,對給定...