-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInsertInterval.java
More file actions
81 lines (79 loc) · 1.78 KB
/
Copy pathInsertInterval.java
File metadata and controls
81 lines (79 loc) · 1.78 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).
*
* You may assume that the intervals were initially sorted according to their start times.
*
*
*
* Problem Constraints
* 0 <= |intervals| <= 105
*
*
*
* Input Format
* First argument is the vector of intervals
*
* second argument is the new interval to be merged
*
*
*
* Output Format
* Return the vector of intervals after merging
*
*
*
* Example Input
* Input 1:
*
* Given intervals [1, 3], [6, 9] insert and merge [2, 5] .
* Input 2:
*
* Given intervals [1, 3], [6, 9] insert and merge [2, 6] .
*
*
* Example Output
* Output 1:
*
* [ [1, 5], [6, 9] ]
* Output 2:
*
* [ [1, 9] ]
*/
/**
* 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> in, Interval newIn) {
int n = in.size();
ArrayList<Interval> ans = new ArrayList();
int index = 0;
while(index < n){
Interval cur = in.get(index);
if(newIn == null) {
ans.add(cur);
index += 1;
continue;
}
if(newIn.start > cur.end){
ans.add(cur);
index += 1;
}
else if(newIn.end < cur.start) {
ans.add(newIn);
newIn = null;
}else{
newIn.start = Math.min(cur.start, newIn.start);
newIn.end = Math.max(cur.end, newIn.end);
index++;
}
}
if(newIn != null) ans.add(newIn);
return ans;
}
}