就是正常的先用start排序 然后每一个和前一个比 假如需要merge就改动就行了
注意细节就是comparator怎么写 以及merge的时候需要把这个interval删除 然后 i 不能动 ( --再 ++ )
/**
* 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 static Comparator<Interval> comp = new Comparator<Interval>() {
public int compare(Interval in1, Interval in2) {
int start1 = in1.start;
int start2 = in2.start;
return start1 - start2;
}
};
public List<Interval> merge(List<Interval> intervals) {
if ( intervals == null || intervals.size() < 2 )
return intervals;
Collections.sort( intervals, comp );
for ( int i = 1; i < intervals.size(); i ++ ){
Interval cur = intervals.get ( i );
Interval pre = intervals.get ( i - 1 );
if ( cur.start <= pre.end ){ // merge
pre.end = Math.max ( cur.end, pre.end);
intervals.set ( i - 1, pre );
intervals.remove( i );
i --;
}
}
return intervals;
}
}
本文详细阐述了如何使用排序算法对区间进行整理,并通过自定义比较器和合并操作优化区间处理过程。重点介绍了实现步骤及注意事项,如比较器的设计和合并时的区间更新策略。
322

被折叠的 条评论
为什么被折叠?



