Merge Intervals
来源:互联网 发布:linux网络管理命令 编辑:程序博客网 时间:2024/06/14 03:55
Q:
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]
.
Solution:
Using insert interval:
/** * 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> merged = new ArrayList<Interval>(); for (Interval i: intervals) { List<Interval> list = new ArrayList<Interval>(); for (Interval j: merged) { if (i.start > j.end) list.add(j); else if (i.end < j.start) { list.add(i); i = j; } else i = new Interval(Math.min(i.start, j.start), Math.max(i.end, j.end)); } list.add(i); merged = new ArrayList<Interval>(list); } return merged; }}
Using Comparator:
/** * 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) { if (intervals == null || intervals.size() <= 1) return intervals; List<Interval> merged = new ArrayList<Interval>(); Collections.sort(intervals, new IntervalComparator()); Interval pre = intervals.get(0); for (int i = 1; i < intervals.size(); i++) { Interval cur = intervals.get(i); if (cur.start > pre.end) { merged.add(pre); pre = cur; } else { cur = new Interval(pre.start, Math.max(pre.end, cur.end)); pre = cur; } } merged.add(pre); return merged; } class IntervalComparator implements Comparator<Interval> { public int compare(Interval i1, Interval i2) { return i1.start - i2.start; } }}
0 0
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- merge intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- 链表(4)----反转链表
- vs2012下的cocos2d-x项目,怎样启用控制台进行输出呢?
- 历经风雨,才能看透人心真假;
- ListView
- 多线程对同一数据进行不同操作
- Merge Intervals
- 基于cocos2dx2.2版本安卓环境搭建常见错误解决方法
- 中崎收款机说明书 工厂用扫描枪和超市用扫描枪有何不同
- eclipse启动了tomcat正常,可页面还是404
- 通过打断点调试本地服务程序
- sed 'N;$!D' a
- Hashmap实现原理
- 设计模式:缺省适配器模式
- 集合学习(二)