您的位置:首页 > 其它

[LeetCode]56 Merge Intervals

2015-01-04 08:34 393 查看
https://oj.leetcode.com/problems/merge-intervals/
http://blog.csdn.net/linhuanmars/article/details/21857617
/**
* 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> inputIntervals)
{
// Sort
List<Interval> intervals = new ArrayList<>(inputIntervals);
Collections.sort(intervals, new Comparator<Interval>()
{
public int compare(Interval a, Interval b)
{
return Integer.compare(a.start, b.start);
}
});

int i = 0;
while (i < intervals.size() - 1)
{
Interval a = intervals.get(i);
Interval b = intervals.get(i + 1);
if (overlap(a, b))
{
merge(a, b);
intervals.remove(i + 1);
}
else
{
i ++;
}
}
return intervals;
}

private boolean overlap(Interval a, Interval b)
{
return !(a.start > b.end || b.start > a.end);
}

// Merge b into a.
private void merge(Interval a, Interval b)
{
a.start = Math.min(a.start, b.start);
a.end = Math.max(a.end, b.end);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode