合并区间

来源:互联网 发布:rhino mac授权码 编辑:程序博客网 时间:2024/06/05 06:17

问题描述:

给出若干闭合区间,合并所有重叠的部分。

样例:

给出的区间列表 => 合并后的区间列表:

[                     [  [1, 3],               [1, 6],  [2, 6],      =>       [8, 10],  [8, 10],              [15, 18]  [15, 18]            ]]

解题思路:

按strat从小到大排序,然后用循环判断是否可以合并,合并之后删除多余的区间。

代码:

/** * Definition of Interval: * classs Interval { *     int start, end; *     Interval(int start, int end) { *         this->start = start; *         this->end = end; *     } */ bool comp(const Interval &a, const Interval &b) {     return a.start< b.start;     }class Solution {public:       vector<Interval> merge(vector<Interval> &intervals) {        // write your code here        if (intervals.size()== 0||intervals.size()== 1) return intervals;        sort(intervals.begin(), intervals.end(), comp);        for (int i= 1; i< intervals.size(); i++) {            if (intervals[i].start<= intervals[i-1].end) {                if (intervals[i].end> intervals[i-1].end) {                   intervals[i-1].end=intervals[i].end;                   intervals.erase(intervals.begin()+i); i--;                } else {intervals.erase(intervals.begin()+i); i--;}        }    }    return intervals;    }};


感想:

sort 函数的比较函数不能在类里定义。


原创粉丝点击