合并区间

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

样例

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

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

]

代码:/**  * Definition of Interval:  * classs Interval {  *     int start, end;  *     Interval(int start, int end) {  *         this->start = start;  *         this->end = end;  *     }  */ class Solution { public:     /**      * @param intervals: interval list.      * @return: A new interval list.      */       static bool cmp(const Interval &a, const Interval &b)       {           return a.start < b.start;       }       vector<Interval> merge(vector<Interval> &intervals) {         // write your code here          vector<Interval> qq;           int n = intervals.size();           if (n < 1)           {               return qq;           }           sort(intervals.begin(), intervals.end(), cmp);           int left = intervals[0].start;           int right = intervals[0].end;           for (int i = 1; i < n; i++)           {               if (intervals[i].start <= right)               {                   right = max(right, intervals[i].end);               }               else               {                   qq.push_back(Interval(left, right));                   left = intervals[i].start;                   right = intervals[i].end;               }                        }          qq.push_back(Interval(left, right));         return qq;       }   };

感想:本题难点在于先按照区间第一个数字大小排序,然后写一个比较函数来判断区间是否重叠,若重叠,则在一个新的数组中加上修改后的数组,直到没有

重叠的区间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值