Topic
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]
.
"Analyze"
1. You need to sort by the start of each interval first
2. Determine if the pre's end is greater than or equal to Cur's start, and whether to merge
Algorithm
/*** Definition for a interval. * public class Interval {* int start; * int end; * Interval () {start = 0; end = 0; } * Interval (int s, int e) {start = s; end = e;} }*/ Public classSolution { PublicList<interval> Merge (list<interval>intervals) { if(intervals==NULL|| Intervals.size () <1) returnintervals; Collections.sort (intervals,NewComparator<interval>() { Public intCompare (Interval i1,interval i2) {returni1.start-I2.start; }}); List<Interval> res=NewArraylist<interval>(); Interval Pre=intervals.get (0); for(intI=1;i<intervals.size (); i++) {Interval cur=Intervals.get (i); if(pre.end>=cur.start) {Interval merge=NewInterval (Pre.start,math.max (pre.end,cur.end)); Pre=merge; }Else{res.add (pre); Pre=cur; }} res.add (pre); returnRes; }}
56-merge intervals