您的位置:首页 > 其它

LeetCode 56 Merge Intervals

2017-10-13 15:04 316 查看
原题:(频率5)

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]
.

题意:给一个intervals的集合,合并所有重叠的。

代码和思路:

/**
* 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; }
* }
*/
class Solution {
public List<Interval> merge(List<Interval> intervals) {
if(intervals.size()<=1){
return intervals;
}
//按start大小排序
intervals.sort((i1, i2) -> Integer.compare(i1.start, i2.start));

List<Interval> result = new LinkedList<>();

int start = intervals.get(0).start;
int end = intervals.get(0).end;

for(Interval i:intervals){
if(i.start <= end){
end = Math.max(end,i.end);
}
else{
result.add(new Interval(start,end));
start = i.start;
end = i.end;
}
}
//因为循环中会漏加最后一组,这里加上
result.add(new Interval(start,end));
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: