-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinsert-interval.java
More file actions
41 lines (41 loc) · 1.29 KB
/
insert-interval.java
File metadata and controls
41 lines (41 loc) · 1.29 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
/**
* 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 ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) {
// Start typing your Java solution below
// DO NOT write main() function
Interval cur = null,next;
int index=search(intervals,newInterval.start);
if(index==intervals.size()) intervals.add(newInterval);
else intervals.add(index,newInterval);
int i;
if(index==0) i=0;
else if(intervals.get(index-1).end>=newInterval.start) i=index-1;
else i=index;
cur=intervals.get(i);
int j=i+1;
while(j<intervals.size()&&cur.end>=intervals.get(j).start) {
next=intervals.get(j);
cur.end=Math.max(cur.end,next.end);
intervals.remove(next);
}
return intervals;
}
public int search(ArrayList<Interval> in,int t) {
int l=0,r=in.size()-1;
while(l<=r) {
int mid=l+(r-l)/2;
if(t<in.get(mid).start) r=mid-1;
else if(t>in.get(mid).start) l=mid+1;
else return mid;
}
return l;
}
}