您的位置:首页 > 其它

[leetcode]Merge Intervals

2014-07-25 20:56 239 查看

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



算法思路:

将intervals按照start进行排序,然后建立一个空的list,把intervals的元素逐个插入并做合并操作。

值得注意的是:如果intervals的待插入元素能与list的元素合并,则一定是与最后一个合并。think about it

【吐槽】:这是第一遍时候想到的算法,还是很不错的,单次遍历,只不过当时不会用Collections.sort()自己手动的排序了。o(╯□╰)o

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