Merge Intervals
2016-07-07 15:42
169 查看
/** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interval(int s, int e) { start = s; end = e; } * } */ public class Solution { public List<Interval> merge(List<Interval> intervals) { List<Interval> res = new LinkedList<>(); if (intervals == null) { throw new IllegalArgumentException(" "); } if (intervals.size() == 0) { return res; } Collections.sort(intervals, new Comparator<Interval>(){ @Override public int compare(Interval a, Interval b) { if (a.start != b.start) { return a.start - b.start; } else { return a.end - b.end; } } }); Interval prev = intervals.get(0); for (int i = 1; i < intervals.size(); i++) { Interval cur = intervals.get(i); if (cur.start > prev.end) { res.add(prev); prev = cur; } else { Interval merge = new Interval(prev.start, Integer.max(prev.end, cur.end)); prev = merge; } } res.add(prev); return res; } }
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- CentOS上编译hadoop 2.7
- javascript 基础篇
- 深入浅出zeptojs中tap事件
- http://biancheng.dnbcw.info/java/138631.html
- linux对外开放某个端口命令
- linux sys目录介绍
- Laravel事件广播
- L2-004. 这是二叉搜索树吗?
- 线程利用管道字节(字符)流进行通信
- C++模板
- (七)继承(一)
- linux下进程通信方式--共享内存
- windows的IPC空连接
- git忽略文件改变配置
- Qt窗口嵌入
- android studio 生成全局变量的快捷键
- GitLab8.9修改项目地址
- 详解 Android 是如何启动的
- 转载:信号与频谱