Leetcode 56 合併區間

2021-09-29 16:48:08 字數 1359 閱讀 2520

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

示例 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] 可被視為重疊區間。

思路:先給每行數按照第乙個數字排序

之後遍歷,如果nums[i][0]<=nums[i+1][0]&&nums[i][1]>=nums[i+1][1],說明兩個陣列可以合併,否則把nums[i][0],nums[i][1]加入要輸出的區間,之後把i+1設為新的標誌,開始比較

提交的**:

class solution {

public int merge(int intervals) {

if (intervals == null || intervals.length == 0) {

return intervals;

arrays.sort(intervals, new comparator() {

public int compare(int o1, int o2) {

if (o1[0] == o2[0]) {

return o1[1] - o2[1];

return o1[0] - o2[0];

int a=intervals[0][0],b=intervals[0][1];

int nums = new int[intervals.length][2];

if(intervals.length==1)

return intervals;

int k=0;

" "+b);

for(int i=1;iif(intervals[i][0]>=a&&b>=intervals[i][0])

b = math.max(b, intervals[i][1]);

else

nums[k][0] = a;

nums[k][1] = b;

k++;

a = intervals[i][0];

b = intervals[i][1];

nums[k][0] = a;

nums[k][1] = b;

" "+b);

int n = new int[k+1][2];

for(int i=0;i<=k;i++)

n[i][0] = nums[i][0];

n[i][1] = nums[i][1];

return n;

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 可被視為重疊區間。解題思路 1...

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 可被視為重疊區間。題意還是好理...