leetcodeマージ区間
5076 ワード
最も簡単なソート方法を使用します.
1 /**
2 * Definition for an interval.
3 * public class Interval {
4 * int start;
5 * int end;
6 * Interval() { start = 0; end = 0; }
7 * Interval(int s, int e) { start = s; end = e; }
8 * }
9 */
10 public class Solution {
11 public List<Interval> merge(List<Interval> intervals) {
12 if(intervals.size()<=1) return intervals;
13 ArrayList<Interval> arry=new ArrayList<Interval>();
14 Comparator<Interval> cmp=new Comparator<Interval>(){
15 public int compare(Interval v1,Interval v2)
16 {
17 return v1.start-v2.start;
18 }
19
20
21
22 };
23 Collections.sort(intervals,cmp);
24 Interval pre=intervals.get(0);
25 for(int i=1;i<intervals.size();i++)
26 {
27 Interval cur=intervals.get(i);
28 if(cur.start<=pre.end)
29 {
30 pre=new Interval(pre.start,Math.max(cur.end,pre.end));//merge
31
32 }
33 else
34 {
35 arry.add(pre);
36 pre=cur;
37 }
38
39 }
40 arry.add(pre);
41 return arry;
42
43 }
44 }