您的位置:首页 > 其它

LeetCode 56. Merge Intervals(合并区间)

2016-05-21 07:14 537 查看
原题网址:https://leetcode.com/problems/merge-intervals/

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]
.
方法:按照开始点对区间进行排序,然后合并。

/**
* 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) {
Collections.sort(intervals, new Comparator<Interval>() {
@Override
public int compare(Interval i1, Interval i2) {
return Integer.compare(i1.start, i2.start);
}
});
List<Interval> merged = new ArrayList<>();
for(int i=0; i<intervals.size(); i++) {
if (i==0) {
merged.add(intervals.get(i));
} else {
Interval last = merged.get(merged.size()-1);
if (last.start <= intervals.get(i).start && intervals.get(i).start <= last.end) {
last.end = Math.max(last.end, intervals.get(i).end);
} else {
merged.add(intervals.get(i));
}
}
}
return merged;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: