題目描述:給出若干閉合區間,合併所有重疊的部分。
樣例:給出的區間列表 => 合併後的區間列表:
[ [
[1, 3], [1, 6],
[2, 6], => [8, 10],
[8, 10], [15, 18]
[15, 18] ]
]
做題思路:先用bool函式規定一種排序演算法,每個陣列的第乙個數字比較,按照公升序的方法排列。運用sort函式將intervals的陣列按照規定排列,分情況討論,一共有兩種情況,一種是前乙個陣列的最後乙個數字大於等於後乙個陣列的最後乙個數字,那就取前面那個陣列,因此在intervals中刪除後乙個陣列;一種是前乙個陣列的最後乙個數字大於等於後乙個陣列的第乙個數字,為了取最大的範圍,就需要把後乙個陣列的end賦給前乙個陣列的end,然後刪掉後乙個陣列。進行這樣的操作,陣列中最終留下的就是所有區間的合併區間。
關鍵**:
/**
* definition of interval:
* classs interval
*/ bool pailie(const interval &a, const interval &b)
else if(intervals[i-1].end>=intervals[i].start)
else i++;
}return intervals;
}};
做題感想:這一題剛開始想的時候一點思路也沒有,同學說需要把區間用sort函式排序。然後就想到了排序之後可以比較,這一題參考網上的答案,剛開始我寫的時候在刪除那裡出現了問題,後來又看了看網上的答案才改正過來。
合併區間 LintCode
描述 給出若干閉合區間,合併所有重疊的部分。樣例 給出的區間列表 合併後的區間列表 1,3 1,6 2,6 8,10 8,10 15,18 15,18 思路 首先先寫乙個比較規則comp,然後用sort 將intervals按其start從小到大排序,這樣可以避免合併區間時的許多問題。然後再建立乙個...
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 的額外空間。標籤排序 陣列 領英 谷歌 思路 由於題目沒有明確說明輸入集是有序的,所以首先對輸入集排序 自定義比...