-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathProblem_1_MergeIntervals.java
45 lines (40 loc) · 1.33 KB
/
Problem_1_MergeIntervals.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package Merge_Intervals;
// Problem Statement: Merge Intervals (medium)
// LeetCode Question: 56. Merge Intervals
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class Problem_1_MergeIntervals {
class Interval{
int start;
int end;
public Interval(int start, int end){
this.start = start;
this.end = end;
}
}
public List<Interval> merge (List<Interval> intervals) {
if (intervals.size() < 2) {
return intervals;
}
Collections.sort(intervals, (a, b) -> Integer.compare(a.start, b.start));
List<Interval> mergedIntervals = new LinkedList<Interval>();
Iterator<Interval> intervalItr = intervals.iterator();
Interval interval = intervalItr.next();
int start = interval.start;
int end = interval.end;
while(intervalItr.hasNext()){
interval = intervalItr.next();
if (interval.start <= end) {
end = Math.max(interval.end, end);
} else {
mergedIntervals.add(new Interval(start, end));
start = interval.start;
end = interval.end;
}
}
mergedIntervals.add(new Interval(start, end));
return mergedIntervals;
}
}