Skip to content

Commit 6333593

Browse files
refactor 436
1 parent 2f3dc07 commit 6333593

File tree

1 file changed

+9
-35
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+9
-35
lines changed

src/main/java/com/fishercoder/solutions/_436.java

+9-35
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,21 @@
11
package com.fishercoder.solutions;
22

3-
import com.fishercoder.common.classes.Interval;
4-
5-
import java.util.Arrays;
6-
import java.util.Collections;
7-
import java.util.HashMap;
8-
import java.util.Map;
3+
import java.util.TreeMap;
94

105
public class _436 {
116

127
public static class Solution1 {
13-
public int[] findRightInterval(Interval[] intervals) {
14-
if (intervals == null || intervals.length == 0) {
15-
return new int[0];
16-
}
17-
int[] result = new int[intervals.length];
18-
result[0] = -1;
19-
Interval last = intervals[intervals.length - 1];
20-
Interval first = intervals[0];
21-
Map<Interval, Integer> map = new HashMap();
8+
public int[] findRightInterval(int[][] intervals) {
9+
TreeMap<Integer, Integer> map = new TreeMap<>();
10+
int[] res = new int[intervals.length];
2211
for (int i = 0; i < intervals.length; i++) {
23-
map.put(intervals[i], i);
24-
}
25-
26-
Collections.sort(Arrays.asList(intervals), (o1, o2) -> o1.start - o2.start);
27-
28-
for (int i = 1; i < intervals.length; i++) {
29-
//TODO: use binary search for the minimum start interval for interval[i-1] instead of a while loop
30-
int tmp = i - 1;
31-
int tmpI = i;
32-
while (tmpI < intervals.length && intervals[tmpI].start < intervals[tmp].end) {
33-
tmpI++;
34-
}
35-
if (tmpI < intervals.length) {
36-
result[map.get(intervals[tmp])] = map.get(intervals[tmpI]);
37-
} else {
38-
result[map.get(intervals[tmp])] = -1;
39-
}
12+
map.put(intervals[i][0], i);
4013
}
41-
if (result[intervals.length - 1] == 0 && last.end > first.start) {
42-
result[intervals.length - 1] = -1;
14+
for (int i = 0; i < intervals.length; i++) {
15+
Integer key = map.ceilingKey(intervals[i][intervals[i].length - 1]);
16+
res[i] = key != null ? map.get(key) : -1;
4317
}
44-
return result;
18+
return res;
4519
}
4620
}
4721

0 commit comments

Comments
 (0)