合併區間 LintCode

2021-08-02 14:39:14 字數 981 閱讀 5823

描述:

給出若干閉合區間,合併所有重疊的部分。

樣例:

給出的區間列表 => 合併後的區間列表:

[                     [

[1, 3], [1, 6],

[2, 6], => [8, 10],

[8, 10], [15, 18]

[15, 18] ]

]

思路:

首先先寫乙個比較規則comp,然後用sort(,,)將intervals按其start從小到大排序,這樣可以避免合併區間時的許多問題。

然後再建立乙個vector v,將intervals中的區間與v中的逐一比較,若有相同,則合併,其他則將其存入v,由於之前對intervals

已將排過序,所以intervals與v中元素比較時有重複區間的只有兩種情況:

1.intervals[i].start<=v[j].end && intervals[i].end>=v[j].end 

2.intervals[i].start>=v[j].start && intervals[i].end<=v[j].end

其他情況則是無相同區間,新存入v即可。

ac**:

/**

* definition of interval:

* classs interval

*/class solution

vectormerge(vector&intervals)

if(intervals[i].start<=v[j].end && intervals[i].end>=v[j].end)

}if(j==v.size())

v.push_back(intervals[i]);

}return v;

}};

LintCode 合併區間

題目描述 給出若干閉合區間,合併所有重疊的部分。樣例 給出的區間列表 合併後的區間列表 1,3 1,6 2,6 8,10 8,10 15,18 15,18 做題思路 先用bool函式規定一種排序演算法,每個陣列的第乙個數字比較,按照公升序的方法排列。運用sort函式將intervals的陣列按照規定...

lintcode練習 156 合併區間

給出若干閉合區間,合併所有重疊的部分。您在真實的面試中是否遇到過這個題?是 given intervals merged intervals 1,3 1,6 2,6 8,10 8,10 15,18 15,18 o n log n 的時間和 o 1 的額外空間。實現 思路 先對列表按照start進行排...

lintcode 156 合併區間

給出若干閉合區間,合併所有重疊的部分。樣例給出的區間列表 合併後的區間列表 1,3 1,6 2,6 8,10 8,10 15,18 15,18 挑戰 o n log n 的時間和 o 1 的額外空間。標籤排序 陣列 領英 谷歌 思路 由於題目沒有明確說明輸入集是有序的,所以首先對輸入集排序 自定義比...