-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinsertInterval.java
More file actions
55 lines (52 loc) · 1.55 KB
/
Copy pathinsertInterval.java
File metadata and controls
55 lines (52 loc) · 1.55 KB
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
46
47
48
49
50
51
52
53
54
55
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class insertInterval {
class compareInterval implements Comparator<Interval>{
public int compare(Interval i1, Interval i2){
if( i1.start == i2.start)
return i1.end - i2.end;
return i1.start - i2.start;
}
}
public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
if(newInterval == null)
return intervals;
List<Interval> ret = new ArrayList<Interval>();
if (intervals == null){
ret.add(newInterval);
return ret;
}
intervals.add(newInterval);
Interval[] arr = new Interval[intervals.size()];
intervals.toArray(arr);
java.util.Arrays.sort(arr,new compareInterval());
for(int i = 0; i < arr.length;){
int j = i;
int start = arr[i].start;
int end = arr[i].end;
while(i+1 < arr.length && end >= arr[i+1].start){
i++;
end = Math.max(arr[i].end,end);
}
if (i > j){
ret.add(new Interval(start,end));
}
else{
ret.add(arr[j]);
}
i++;
}
return ret;
}
public static void main(String args[]){
Interval[] arr = {new Interval(1,5)};
insertInterval ii = new insertInterval();
List<Interval> intervals = new ArrayList<Interval>();
for(Interval i:arr)
intervals.add(i);
for(Interval i:ii.insert(intervals, new Interval(1,3))){
System.out.printf("start: %d, end:%d\n",i.start,i.end);
}
}
}