区间重合--c++
題目簡述
給出一個區間的集合,請合并所有重疊的區間。
示例 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] 可被視為重疊區間。解題思路
代碼
class Solution { public:void sort (vector<vector<int>> &a,int s,int e){if (s >= e)return;int i = s, j = e;vector<int> k = a[s];while (i < j) {while ( i < j && a[j][0] >= k[0])--j;if ( i < j ) {a[i] = a[j];}while ( i < j && a[i][0] <= k[0])++i;if ( i < j ) {a[j] = a[i];}}a[i] = k;sort(a,s,i-1);sort(a,i+1,e);}vector<vector<int>> merge(vector<vector<int>>& intervals) {int i, j, last=-1;vector<vector<int>> ans;sort(intervals, 0, intervals.size() -1);for (int index=0; index<intervals.size(); ++index) {if (last == -1 || intervals[index][0] > j){if (last != -1){ // endans.push_back(vector<int>({i, j}));}i = intervals[index][0];j = intervals[index][1];last = index;} else {i = i < intervals[index][0]? i:intervals[index][0];j = j > intervals[index][1]? j:intervals[index][1];}}if (last != -1){ // endans.push_back(vector<int>({i, j}));}return ans;} };總結
- 上一篇: xpath如何得到【爬虫】
- 下一篇: atoi实现(考虑足够多种的情况)c++