您的位置:首页 > 编程语言 > Java开发

JAVA---Merge Intervals

2016-04-08 14:03 429 查看
Given a collection of intervals, merge all overlapping intervals.

Given intervals => merged intervals:

[ [

[1, 3], [1, 6],

[2, 6], => [8, 10],

[8, 10], [15, 18]

[15, 18] ]

]

/**
* Definition of Interval:
* public class Interval {
*     int start, end;
*     Interval(int start, int end) {
*         this.start = start;
*         this.end = end;
*     }
*/

class Solution {
/**
* @param intervals: Sorted interval list.
* @return: A new sorted interval list.
*/
public List<Interval> merge(List<Interval> intervals) {
// write your code here

if (intervals == null || intervals.size() <= 1) {
return intervals;
}

Collections.sort(intervals, new IntervalComparator());

ArrayList<Interval> result = new ArrayList<Interval>();
Interval last = intervals.get(0);
for (int i = 1; i < intervals.size(); i++) {
Interval curt = intervals.get(i);
if (curt.start <= last.end ){
last.end = Math.max(last.end, curt.end);
}else{
result.add(last);
last = curt;
}
}

result.add(last);
return result;
}

private class IntervalComparator implements Comparator<Interval> {
public int compare(Interval a, Interval b) {
return a.start - b.start;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: