博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode OJ:Merge Intervals(合并区间)
阅读量:6583 次
发布时间:2019-06-24

本文共 2329 字,大约阅读时间需要 7 分钟。

Given a collection of intervals, merge all overlapping intervals.

For example,

Given  [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].

看起来感觉不像hard类型的题目,不过要注意的一点是这里给出的数据不一定会像上面这样按照顺序来进行排序,所以处理前首先要按照一定的规则处理一下,写一个functor来进行比较,用struct即可,排序后这个范围就很好确定了,代码如下所示:

1 class Solution { 2 public: 3     vector
merge(vector
& intervals) { 4 int p = 0, q = 1; 5 std::sort(intervals.begin(), intervals.end(), comp); 6 vector
ret; 7 while(q < intervals.size()){ 8 if(intervals[p].end < intervals[q].start){ //这个范围需要记录下来 9 ret.push_back(intervals[p]);10 p = q;11 q++;12 }else{13 if(intervals[p].end < intervals[q].end) //根据条件才更新范围 14 intervals[p].end = intervals[q].end;15 q++;16 }17 }18 if(p < intervals.size())19 ret.push_back(intervals[p]);20 return ret;21 }22 23 24 struct myComparator{25 bool operator()(const Interval & i, const Interval & j){26 return i.start < j.start;27 }28 }comp;29 };

 java版本的代码如下所示:

1 public class Solution { 2     public List
merge(List
intervals) { 3 Collections.sort(intervals, new Comparator
(){ 4 public int compare(Interval i1, Interval i2){ 5 return i1.start - i2.start; 6 } 7 }); 8 int sz = intervals.size(); 9 List
ret = new ArrayList
();10 if(sz == 0) return ret;11 int prev = 0, next = 1;12 while(next < sz){13 if(intervals.get(prev).end < intervals.get(next).start){14 ret.add(intervals.get(prev));15 prev = next;16 next++;17 }else{18 intervals.get(prev).end = Math.max(intervals.get(prev).end, intervals.get(next).end);19 next++;20 }21 }22 intervals.get(prev).end = Math.max(intervals.get(prev).end, intervals.get(sz-1).end);23 ret.add(intervals.get(prev));24 return ret;25 }26 }

 

转载于:https://www.cnblogs.com/-wang-cheng/p/5115746.html

你可能感兴趣的文章
微软云计算介绍与实践(介绍之五)
查看>>
在linux下搭建HA和LB集群(lvs&heartbeat群集)
查看>>
安装wine
查看>>
阻抗匹配与史密斯(Smith)圆图基本原理
查看>>
路由器与交换机的密码恢复
查看>>
Cisco路由器上的IPSec协议(站点到站点的×××)
查看>>
Java面向对象学习笔记 -- 5(抽象类、接口)
查看>>
关于apache下同IP多域名支持HTTPS和80跳转HTTPS的配置
查看>>
Linux Python详细安装、升级指南
查看>>
软件架构
查看>>
无法修复ie使用代理服务器
查看>>
【Apache Mina2.0开发之二】自定义实现Server/Client端的编解码工厂(自定义编码与×××)!...
查看>>
JS判断终端类型
查看>>
Exchange 2013 SP1 先决条件
查看>>
关于suid/guid
查看>>
教你给IDEA安装插件
查看>>
在windows上安装curl
查看>>
使用EasyWechat为“WX公众号”增加一个访问统计的方案实现
查看>>
数据库的工具类
查看>>
深入理解PHP Opcode缓存原理
查看>>