public class Solution {
public List<Interval> merge(List<Interval> intervals) {
if(intervals.size()<=1) return intervals;
int i=0;
while(i<intervals.size()){
Interval inti=intervals.get(i);
int j=i+1;
int flag=0;
while(j<intervals.size()){
Interval intj=intervals.get(j);
if(intj.start<=inti.end&&intj.end>=inti.start){
inti.start=Math.min(inti.start, intj.start);
inti.end=Math.max(inti.end, intj.end);
intervals.remove(j);
intervals.set(i, inti);
flag=1;
}else{
j++;
}
}
if(flag==0)i++;
}
return 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]
.
要求合并区间 要想完全合并 只能依次遍历
i从第一个开始 若遍历其后面的区间j 若无能匹配的 开始i第二个 若有 则j依次与其匹配 再将匹配的结果存为新的i继续与j匹配至结束 j遍历完成后 根据 状态值flag(标志是否有j与i匹配) flag=1则将i再次遍历比较 代码如下: